返回集合的SQL查询

时间:2018-10-10 17:09:18

标签: sql

我有一张下表

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;

2 个答案:

答案 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()