Mysql 确定SQL分组后组中是否存在值的输出

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

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 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谢谢你的回答。谢谢你的回答。