T-SQL按id对所有行和组进行计数

T-SQL按id对所有行和组进行计数,sql,sql-server,group-by,average,Sql,Sql Server,Group By,Average,我对sql有点问题。 我需要一个查询的帮助,它可以根据id统计所有行和组。 我需要这个,因为我需要得到平均登录次数 表中有:MRr,日期 MNr 3=>5个条目 MNr 4=>2个条目 MNr 5=>7个条目 现在我需要计算所有MNr,其条目数占所有平均值的50%以上。 比如:5+2+7/3=4666,结果是MNR3和MNR5 我用AVGCOUNTdate之类的东西试过了,但没用 我希望你们知道我的意思。。。很难为我解释对不起 Greetz您似乎希望MNR的登录次数超过MNR的平均登录次数。下面

我对sql有点问题。 我需要一个查询的帮助,它可以根据id统计所有行和组。 我需要这个,因为我需要得到平均登录次数

表中有:MRr,日期

MNr 3=>5个条目

MNr 4=>2个条目

MNr 5=>7个条目

现在我需要计算所有MNr,其条目数占所有平均值的50%以上。 比如:5+2+7/3=4666,结果是MNR3和MNR5

我用AVGCOUNTdate之类的东西试过了,但没用

我希望你们知道我的意思。。。很难为我解释对不起


Greetz

您似乎希望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;

您似乎希望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;

另一种解决方案:

select MRr, count(*) as _count
from mnr
group by MRr
having count(*) > (select count(*) / count(distinct mrr) * 1.0 from mnr)

另一种解决方案:

select MRr, count(*) as _count
from mnr
group by MRr
having count(*) > (select count(*) / count(distinct mrr) * 1.0 from mnr)

不清楚你在说什么。你能添加一些样本数据和预期的输出吗?也许这会让事情变得清楚。不清楚你在说什么。你能添加一些示例数据和预期的输出吗?也许这会使问题变得更清楚。我认为你可以在数据库中使用一个子查询,即从MNR中选择count*/countdistinct mrr*1.0。这对我很有用。但是,对于什么情况,您需要使用倍数1.0?@R3Tech强制转换为浮点数,否则结果将被四舍五入,并且比较将不正确。结果应该是四舍五入。在这个特殊的情况下,它可能并不重要,但它仍然是一个错误。我认为您可以使用一个子查询,即从MNR中选择count*/countdistinct mrr*1.0,这对我来说很有用。但是,对于什么情况,您需要使用倍数1.0?@R3Tech强制转换为浮点数,否则结果将被四舍五入,并且比较将不正确。结果应该是四舍五入。在这个特殊的情况下,它可能并不重要,但它仍然是一个错误。是的,但我不理解你的查询是如此正确?查询中的查询?我在学校的atm机上从来没有这样做过,所以我想我不需要这个答案。如果你想学习SQL语言,你应该学习所有的组件以及如何正确使用它们。是的,但是我不理解你的问题?查询中的查询?我从来没有在学校atm机上这样做过,所以我想我不需要这个答案。如果你想学习SQL语言,你应该学习所有的组件以及如何正确使用它们。