我对sql有点问题。 我需要一个查询的帮助,其中可以通过id计算所有行和组。 我需要这个,因为我需要获得登录的平均值。
表格如下:MRr,date
MNr 3 => 5个条目
MNr 4 => 2个条目
MNr 5 => 7个条目
现在我需要结果所有MNr的条目数超过所有平均值的50%。
例如:(5+2+7)/3 = 4,666
,结果是MNr 3和MNr 5.
我尝试使用像AVG(COUNT(date))
这样的东西,但它不起作用。
我希望你们知道我的意思......很难为我解释抱歉。
格尔茨
答案 0 :(得分:5)
您似乎希望MNR具有超过MNR的平均登录次数。这是一个使用窗口函数的方法:
select mnr, cnt
from (select mnr, count(*) as cnt, avg(1.0*count(*)) over () as avg
from table t
group by mnr
) t
where cnt > avg;
答案 1 :(得分:3)
另一种解决方案:
select MRr, count(*) as _count
from mnr
group by MRr
having count(*) > (select count(*) / count(distinct mrr) * 1.0 from mnr)