对于给定的数据,我需要找出薪水小于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的平均工资]
答案 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的平均工资的工资计数 希望你只想要这个。