使用聚合函数sql查找计数

时间:2015-04-20 10:31:04

标签: sql oracle oracle10g

对于给定的数据,我需要找出薪水小于avg(薪水)的id计数

id  salary
1   11
2   12 
2   14
1   12
1   13
1   14
1   15

所以我的最终输出将是这样的

id count 
  1   2
  2   1

[id 1的平均工资为13,id 2的平均工资为13.因此,对于id 2,id 1中有两个值小于id的平均工资]

3 个答案:

答案 0 :(得分:2)

我倾向于使用窗口函数:

select id, count(*) as cnt
from (select t.*, avg(salary) over (partition by id) as avgs
      from table t
     ) t
where salary < avgs
group by id;

答案 1 :(得分:1)

GROUP BY使用COUNT(*)来计算,检查WHERE&lt; AVG使用子选择:

select id, count(*)
from tablename
where salary < (select avg(salary) from tablename)
group by id

答案 2 :(得分:-2)

select id , count(salary)
from tablename
group by id
having salary < avg(salary)

此查询将为您提供低于每个ID的平均工资的工资计数 希望你只想要这个。