Oracle sql查询需要在表的其他列下显示count(*)值

时间:2017-04-13 19:12:22

标签: sql oracle

我有一个来自Oracle sql的要求,它将显示来自查询的数据,并输出如下所示: -

  • 第一种情况:-Count()介于0-2之间,然后计数()值应低于0-2列
  • 第二种情况:-Count()介于2-4之间,然后计数()值应低于2-4列
  • 第三种情况:-Count()介于4-24之间,然后计数()值应低于4-24列
  • 第四种情况:-Count()介于24-48之间,然后计数()值应低于24-48列
  • 第五种情况:-Count()> 48或者超过48'那么count()值应该在>之下48栏

查询:

Select a,b,Count(*),0-2,2-4,4-24,24-48,>48
from Table
where id=4
group by a,b,0-2,2-4,4-24,24-48,>48;

id = 4的示例输出,这里假设count为6

Count(*)|0-2|2-4|4-24|24-48|>48|
--------|---|---|----|-----|---|
6       |0  |0  |6   |0    |0  |

注意0-2,2-4,4-24,24-48,> 48是列名

1 个答案:

答案 0 :(得分:0)

这只是一堆case语句:

Select a, b,
       (case when Count(*) < 2 then count(*) else 0 end) as "0-1",
       (case when count(*) >= 2 and count(*) < 4 then count(*) else 0 end) as "2-3",
       . . .
from Table
where id = 4
group by a, b;

注意:between在SQL中是包含的。我假设你不想要计算&#34; 2&#34;出现在两列中。