2012-08-01 44 views
-1

我一直试图做的是对年龄,但似乎无法做到这一点值的选择数量,它的follwing:列x,其中columnfoo = Y

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

+1

你能给一些示例数据和结果:您可以根据在同一时间在不同的条件算什么? – lucemia 2012-08-01 17:56:52

+0

你的代码在哪里? – codingbiz 2012-08-01 17:57:21

回答

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 
1

试试这个:

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

...或者更一般地说,

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