簡體   English   中英

對 SQL 服務器表中的記錄進行分組和計數,按組(PARTITION BY)首次出現

[英]Group and count records in a SQL Server table with first occurrence by group (PARTITION BY)

我有一個包含以下列的表格:

ID - int
Time - DateTime
Message - nvarchar(max)

我想 select 不同的消息,每條消息的出現次數和每條消息的第一次。 我還想避免嵌套 SQL。

這是我正在嘗試構建的 SQL 的示例:

SELECT [Message], FIRST_VALUE([Time]) OVER(PARTITION BY [Message] order by [Time]), COUNT(*) 
FROM MyTable
GROUP BY [Time]
ORDER BY [Time]

它不起作用,但我相信這是一個很好的起點。 我應該如何更改此 SQL 以使其正常工作?

  • 我想 select 不同的消息 = GROUP BY [Message]

  • 每條消息的出現次數 = count([Message])

  • 每條消息的第一次 = min([TIME])

     SELECT [Message], min([TIME]), count([Message]) FROM MyTable GROUP BY [Message]

這是一個小演示:

演示

您必須將message字段添加到group by語句,並且不需要使用 window function。 僅使用min()聚合 function。

SELECT [Message], MIN([Time]) as First_Time, COUNT(*) 
FROM MyTable
GROUP BY [Message]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM