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

时间:2012-08-01 17:53:51

标签: mysql sql

我一直试图做的是多年但似乎无法做到,这是以下几点:

在列x中选择值列数,其中columnfoo = y

3 个答案:

答案 0 :(得分:1)

试试这个:

SELECT COUNT(DISTINCT x) 
FROM table
WHERE columnfoo = y

...或更一般地说,

SELECT columnfoo, COUNT(DISTINCT x) 
FROM table
GROUP BY columnfoo

答案 1 :(得分:1)

您可以在聚合函数中使用CASE表达式,仅根据条件进行聚合:

SELECT COUNT(CASE WHEN columnfoo = 'y' THEN 1 END) AS y_count
FROM   tbl

如果columnfoo = y,则将该行计入计数,否则,不要添加到计数中。

这样可以避免过滤掉WHERE子句中的记录,以防您还想处理columnfoo不同的记录y

示例:您可以同时根据不同的条件进行计数:

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

答案 2 :(得分:0)

SELECT x, COUNT(x) FROM TABLE_NAME WHERE columnfoo = y GROUP BY x