我有一张下表
socket_id | event_type | response
----------+------------+---------
2 | 2 | 404
----------+------------+---------
2 | 4 | 200
----------+------------+---------
2 | 2 | 500
----------+------------+---------
3 | 2 | 400
----------+------------+---------
2 | 3 | 404
----------+------------+---------
我需要一个SQL查询,该查询返回一组所有套接字,并由每个套接字注册许多不同的事件类型,并按socket_id ASC排序
到目前为止,我编写此查询的原因是对于相同的socket_id,它不会返回不同的event_type。
SELECT socket_id,
SUM(CASE WHEN event_type >= 1 THEN 1 ELSE 0 END) types
FROM Events
GROUP BY socket_id;
答案 0 :(得分:4)
好像是这个意思:
SELECT socket_id,
count(distinct event_type) as types
FROM Events
GROUP BY socket_id
ORDER BY socket_id;
答案 1 :(得分:1)
您的描述建议我:
SELECT socket_id, COUNT(event_type) AS types
FROM Events
GROUP BY socket_id
ORDER BY socket_id;
如果您想要唯一的event_type
计数,请在DISTINCT
内使用COUNT()
。