0

在 SQL 中有一种表达方式来计算有多少值与 不同'x'

SELECT COUNT(NULLIF(col, 'x')) FROM table

我发现计算等于 的值不太优雅'x'

  • SELECT COUNT(*) - COUNT(NULLIF(col, 'x')) FROM table
  • SELECT SUM(CASE WHEN col = 'x' THEN 1 ELSE 0 END) FROM table
  • [神谕] SELECT COUNT(DECODE(col,'x','x',NULL)) FROM table

有没有更优雅的方法来做到这一点?

4

3 回答 3

4
 SELECT 
     COUNT(CASE WHEN col='x' THEN 1 END) AS XCount, 
     COUNT(CASE WHEN col='y' THEN 1 END) AS YCount,
     COUNT(CASE WHEN col='z' THEN 1 END) AS ZCount
  FROM table
于 2013-10-14T12:18:43.660 回答
0

直接的方法是在WHERE子句中进行过滤:

SELECT COUNT(*) FROM table WHERE col = 'x'

编辑:

如果您不能使用 where 子句(因为您在同一个 SELECT 中执行多个计数),那么我认为您自己建议的方式是最优雅的方式。我个人的偏好是SUM(CASE WHEN....

于 2013-10-14T12:07:46.803 回答
0

品味是一件很私人的事情,我喜欢在 Oracle 中使用这种语法:

select sum(decode(text,'x',0,1))
from table
于 2013-10-14T12:10:07.950 回答