我如何编写 SQL 查询来列出不同的值及其在 table 中出现的次数?

How can I write a SQL query to list distinct values and their number of occurrences from a table?

我有一个 table,其中包含警报事件的历史记录。 我认为与此唯一相关的专栏是 Message,但还有其他专栏,例如 Time/Date 和 Source.

这是一个示例 table:

Time/Date Message Source
2022-04-27/11:59:28 Code 1 VFD1
2022-04-27/11:59:37 Code 4 VFD1
2022-04-27/11:59:39 Code 1 VFD1
2022-04-27/11:59:42 Code2 VFD1
2022-04-27/11:59:44 Code 1 VFD1
2022-04-27/11:59:46 Code 3 VFD1
2022-04-27/11:59:48 Code 1 VFD1
2022-04-27/11:59:50 Code 2 VFD1

据此,我想创建这样的东西:

Message Occurrences
Code 1 4
Code 2 2
Code 3 1
Code 4 1

这是在 SCADA 软件包 (ICONICS/Genesis64) 中完成的,所以我不确定 SQL 的确切风格,但我认为应该是 Microsoft SQL 服务器或类似服务器。

我可以运行这个:

SELECT COUNT( DISTINCT Message) as Messages FROM dm_Alarms

获取我有多少个唯一值,但我卡在如何计算每个唯一值,然后列出它们。

而且我不知道我可能对 Message 有哪些值,它可能有很多并且会随着时间而改变。

谢谢

看来您只需要聚合?

select Message, count(*) Occurrences
from dm_Alarms
group by Message;