Mysql 选择x列中的值计数,其中columnfoo=y
多年来,我一直试图做到这一点,但似乎做不到,原因如下: 选择x列中的值计数,其中columnfoo=yMysql 选择x列中的值计数,其中columnfoo=y,mysql,sql,Mysql,Sql,多年来,我一直试图做到这一点,但似乎做不到,原因如下: 选择x列中的值计数,其中columnfoo=y SELECT COUNT(DISTINCT x) FROM table WHERE columnfoo = y 。。。或者更一般地说 SELECT columnfoo, COUNT(DISTINCT x) FROM table GROUP BY columnfoo 您可以在聚合函数中使用表达式,仅根据条件进行聚合: SELECT COUNT(CASE WHEN columnfoo =
SELECT COUNT(DISTINCT x)
FROM table
WHERE columnfoo = y
。。。或者更一般地说
SELECT columnfoo, COUNT(DISTINCT x)
FROM table
GROUP BY columnfoo
您可以在聚合函数中使用表达式,仅根据条件进行聚合:
SELECT COUNT(CASE WHEN columnfoo = 'y' THEN 1 END) AS y_count
FROM tbl
如果columnfoo=y,则将该行计算到计数中,否则,不要将其添加到计数中
这避免了在您还希望处理columnfoo与y不同的记录时,必须过滤掉WHERE子句中的记录
示例:您可以同时根据不同的条件进行计数:
SELECT COUNT(CASE WHEN columnfoo = 'y' THEN 1 END) AS y_count,
COUNT(CASE WHEN columnfoo = 'x' THEN 1 END) AS x_count,
COUNT(CASE WHEN columnfoo = 'z' THEN 1 END) AS z_count
-- etc..
FROM tbl
你能提供一些样本数据和结果吗?
SELECT COUNT(CASE WHEN columnfoo = 'y' THEN 1 END) AS y_count,
COUNT(CASE WHEN columnfoo = 'x' THEN 1 END) AS x_count,
COUNT(CASE WHEN columnfoo = 'z' THEN 1 END) AS z_count
-- etc..
FROM tbl