我如何编写 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;
我有一个 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;