我有一个包含名称及其交易的数据集,如何获得高于该平均值且低于该平均值的交易的平均值和计数。
Name Transaction
John 12
John 34
John 45
John 66
John 32
chris 26
chris 54
chris 56
chris 99
chris 13
chris 4
kim 22
kim 34
kim 7
kim 11
kim 34
O/P 将是
Name Avg Count_greater_than_Avg Count_Less_than_Avg
John 37.8 2 3
chris 42 3 3
kim 21.6 3 2
提前致谢..
最佳答案
这基本上首先使用相关查询添加一列 Your_Avg
,然后用另一个选择包装它以选择小于 avg 和大于 avg 的次数的出现次数。
SELECT tt.name,tt.Your_Avg,
count(CASE WHEN tt.Your_Avg > tt.Transaction then 1 end) as Greater_Then_Avg,
count(CASE WHEN tt.Your_Avg > tt.Transaction then 1 end) as Smaller_Then_Avg
FROM(
SELECT t.name,
(SELECT avg(s.transaction) FROM YourTable s WHERE s.name = t.name) as Your_Avg,
t.transaction
FROM YourTable) tt
GROUP BY tt.name
关于mysql - 如何按名称分组大于和小于平均值的计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36397479/