求一简单高效的SQL语句

yanyi1210 2010-12-24 11:03:11
例如一张表tb:
id(int) value(int)
-------- -----------
1 12
2 32
3 22
4 45
5 75
6 175
7 115
8 85

我需要显示出value值分别小于20,30,60,120,180时id的个数,如结果:

总量 小于20的个数 小于30的个数 小于60的个数 小于120的个数 小于180的个数
------- ----------- -------------- -------------- -------------- --------------
1813 1488 1510 1538 1545 1545
...全文
79 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
天-笑 2010-12-24
  • 打赏
  • 举报
回复

declare @tb table(id int,value int)

insert into @tb
select 1,12 union all
select 2,32 union all
select 3,22 union all
select 4,45 union all
select 5,75

select * from @tb


select count(1) as 总量,
sum(case when value <20 then 1 else 0 end ) as 小于20的个数,
sum(case when value<30 then 1 else 0 end ) as 小于30的个数,
sum(case when value<60 then 1 else 0 end ) as 小于60的个数,
sum(case when value<120 then 1 else 0 end ) as 小于120的个数,
sum(case when value<180 then 1 else 0 end ) as 小于180的个数
from @tb
fpzgm 2010-12-24
  • 打赏
  • 举报
回复
--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (id int,value int)
insert into [tb]
select 1,12 union all
select 2,32 union all
select 3,22 union all
select 4,45 union all
select 5,75 union all
select 6,175 union all
select 7,115 union all
select 8,85

select 总量=COUNT(*),
小于20的个数=SUM(case when value<20 then 1 else 0 end),
小于30的个数=SUM(case when value<30 then 1 else 0 end),
小于60的个数=SUM(case when value<60 then 1 else 0 end),
小于120的个数=SUM(case when value<120 then 1 else 0 end),
小于180的个数=SUM(case when value<180 then 1 else 0 end)
from tb

/*
总量 小于20的个数 小于30的个数 小于60的个数 小于120的个数 小于180的个数
8 1 2 4 7 8
*/
飘零一叶 2010-12-24
  • 打赏
  • 举报
回复
SELECT COUNT(*)
,SUM(CASE WHTN value<20 THEN 1 ELSE 0 END) AS 小于20的个数
,SUM(CASE WHTN value<30 THEN 1 ELSE 0 END) AS 小于30的个数
,SUM(CASE WHTN value<60 THEN 1 ELSE 0 END) AS 小于60的个数
,SUM(CASE WHTN value<120 THEN 1 ELSE 0 END) AS 小于120的个数
,SUM(CASE WHTN value<180 THEN 1 ELSE 0 END) AS 小于180的个数
FROM TB
WaterGG 2010-12-24
  • 打赏
  • 举报
回复
select 
总量=count(*),
[小于20的个数]=sum(case when [value]<20 then 1 else 0 end),
[小于30的个数]=sum(case when [value]<30 then 1 else 0 end),
[小于60的个数]=sum(case when [value]<60 then 1 else 0 end),
[小于80的个数]=sum(case when [value]<80 then 1 else 0 end),
[小于120的个数]=sum(case when [value]<120 then 1 else 0 end)
from tb

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧