Mysql 确定SQL分组后组中是否存在值的输出
id、编号、用户和状态是我的列 这里,列“status”具有枚举值'A'、'D'、'P'和'R'Mysql 确定SQL分组后组中是否存在值的输出,mysql,sql,Mysql,Sql,id、编号、用户和状态是我的列 这里,列“status”具有枚举值'A'、'D'、'P'和'R' SELECT number, count(user), status FROM table1 GROUP BY number ORDER BY id DESC 我正在对来自列“number”的结果进行分组,如果组中的任何记录包含“status”的“p”,则结果必须是“p”,否则结果必须是按字母顺序排列的最大值,您可以使用条件聚合: SELECT nu
SELECT
number,
count(user),
status
FROM
table1
GROUP BY
number
ORDER BY
id DESC
我正在对来自列“number”的结果进行分组,如果组中的任何记录包含“status”的“p”,则结果必须是“p”,否则结果必须是按字母顺序排列的最大值,您可以使用条件聚合:
SELECT number,
COUNT(user) counter,
COALESCE(MAX(CASE WHEN status = 'P' THEN status END), MAX(status)) status
FROM table1
GROUP BY number
如果特定编号的状态的任何值为'p'
,则MAX(状态为'p'时,则状态结束)
将返回'p'
,如果没有一个值为'p'
,则返回NULL
因此COALESCE()
对于第一种情况将返回'P'
,对于第二种情况将返回MAX(status)
。如果存在
'P'
,则计算辅助值保持信息,然后根据该值决定:
选择
案例
当总和(状态为'P'时为1,否则为0结束)>0时为'P'
else max(状态)
完,,
数
从…起
表1
分组
数
请说明您的数据库供应商。例如,在Postgres的情况下,也可以使用count(*)过滤器(其中…
。DB供应商是MySQL谢谢你的回答。谢谢你的回答。