有一張表test如下:
create table test ( id int identity(1,1) primary key, num int )
插入數據:
insert into test( num) values (1); insert into test( num) values (2); insert into test( num) values (8); insert into test( num) values (15); insert into test( num) values (12); insert into test( num) values (13); insert into test( num) values (14); insert into test( num) values (16); insert into test( num) values (17); insert into test( num) values (5); insert into test( num) values (6); insert into test( num) values (7); insert into test( num) values (16); insert into test( num) values (18); insert into test( num) values (9); insert into test( num) values (10); insert into test( num) values (11); insert into test( num) values (12); insert into test( num) values (19); insert into test( num) values (20); insert into test( num) values (3); insert into test( num) values (4); insert into test( num) values (19); insert into test( num) values (20); insert into test( num) values (17); insert into test( num) values (18);
問題:請用一條sql語句查詢 統計出num在 1~6, 10~17, 19~20 這三個范圍內的個數分別是多少?
解法如下:
select COUNT (case when num between 1 and 6 then 1 end ) as [1-6], COUNT( case when num between 10 and 17 then 2 end ) as [10-17], COUNT (case when num between 19 and 20 then 3 end ) as [19-20] from test
如果問題是問1~5, 6~10,11~15這樣成倍數(有規律)的話,則可以這樣寫:
select COUNT(*) from test group by num/5
