Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择x列中的值计数,其中columnfoo=y_Mysql_Sql - Fatal编程技术网

Mysql 选择x列中的值计数,其中columnfoo=y

Mysql 选择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 =

多年来,我一直试图做到这一点,但似乎做不到,原因如下:

选择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 = '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