Sql 我怎样才能根据结果从这个小组中获得前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-

我试图得到结果集中每个分组行的前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-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: