-1

我一直在尝试做很多年,但似乎做不到,这是以下情况:

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

4

3 回答 3

1

试试这个:

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

...或更一般地说,

SELECT columnfoo, COUNT(DISTINCT x) 
FROM table
GROUP BY columnfoo
于 2012-08-01T17:57:52.410 回答
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
于 2012-08-01T18:56:04.020 回答
0
SELECT x, COUNT(x) FROM TABLE_NAME WHERE columnfoo = y GROUP BY x
于 2012-08-01T17:58:40.837 回答