T-SQL按ID计算所有行和组

时间:2015-03-02 14:17:20

标签: sql sql-server group-by average

我对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))这样的东西,但它不起作用。

我希望你们知道我的意思......很难为我解释抱歉。

格尔茨

2 个答案:

答案 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)