Sql 我怎样才能根据结果从这个小组中获得前1名?
我试图得到结果集中每个分组行的前1个结果Sql 我怎样才能根据结果从这个小组中获得前1名?,sql,group-by,sql-server-2012,Sql,Group By,Sql Server 2012,我试图得到结果集中每个分组行的前1个结果 Id LogType CreatedOn =============================== 1 Red 2000-01-02T12:34:56Z 2 Red 2000-01-02T12:34:56Z 3 Blue 2000-01-02T12:34:56Z 4 Green 2000-01-02T12:35:56Z 5 Red 2000-01-02T12:36:56Z 6 Red 2000-
Id LogType CreatedOn
===============================
1 Red 2000-01-02T12:34:56Z
2 Red 2000-01-02T12:34:56Z
3 Blue 2000-01-02T12:34:56Z
4 Green 2000-01-02T12:35:56Z
5 Red 2000-01-02T12:36:56Z
6 Red 2000-01-02T12:37:56Z
7 Blue 2000-01-02T12:38:56Z
8 Green 2000-01-02T12:39:56Z
预期结果
LogType Count MostRecent
==================================
Red 4 2000-01-02T12:37:56Z
Blue 2 2000-01-02T12:38:56Z
Green 2 2000-01-02T12:39:56Z
我得到了计数(这很容易),但我不确定如何获取最新的计数,然后将其链接回以前的结果。我在想CreatedOn DESC的行数()/分区顺序和=1的过滤器。。但是我被卡在了连接上
注意:如果对软件特定关键字有任何疑问,我将使用SQL Server 2012。使用Count()over(Partition by)
技巧
Over
子句将帮助您找到每个组(LogType)
的计数,然后如您所述,使用行数
窗口函数找到每个组中的前1个
select LogType, Count, MostRecent from
(
select Row_number() over(partition by LogType order by CreatedOn DESC) RN,
Id, LogType, CreatedOn as MostRecent,
count(LogType) over(partition by LogType) [Count]
from yourtable
) A
where RN=1
尝试以下代码:
select LogType, count(1) as 'Count', max(CreatedOn) as 'MostRecent'
from yourtablename
group by LogType
order by Count desc
TIL:您可以对(分区…)进行计数(..)
。我总是在..
上做行号()hi-5: