如何构造一个有效的查询来计算不同列中的不同属性

时间:2011-10-28 13:11:13

标签: mysql

我有一个表,其中包含不同列中某些属性的行。列A可以是1或0.列B可以是`,null或具有值。

我想计算表中包含A的行数为1的行数,表B中列B为“或”的行数,以及列B中具有的行数条目不等于''且不等于null。

是否可以将所有内容放入单个查询中,还是必须编写三个不同的查询?

我正在使用mysql。谢谢。

1 个答案:

答案 0 :(得分:1)

您的B条件会计算所有行数,因此您可以通过一次扫描完成。

SELECT COUNT(CASE WHEN A=1 THEN 'X' END),
       SUM(CASE WHEN B='' OR B IS NULL THEN 1 ELSE 0 END),
       SUM(CASE WHEN B='' OR B IS NULL THEN 0 ELSE 1 END)
FROM YourTable