我需要依靠一列不同的值,如:计数空值作为唯一的值
Hours
1
1
2
null
null
null
结果必须是:。我的查询是:
select count(distinct hour) from hours;
但它返回:2.我还测试:
select count(*) from hours group by hour
但它返回三行:
(1) 3
(2) 2
(3) 1
我怎么能算空值的值为1并使用不同的方法来避免重复计数?
我学习先进的SQL,他们希望我为所有的解决方案,这些要求:
“尽量减少你需要解决的查询子查询的数量。此外,您不允许使用以下构造:“
- SELECT在FROM或SELECT中。您可以进行子查询(在WHERE或HAVING中选择)
- 聚合函数的组合,例如COUNT(COUNT ..)),SUM(COUNT ..))等等。
- UNION如果你能避免它。
- 非标准功能(如NVL)
- CASE
玩弄COALESCE(COL,0) – Strawberry 2013-02-23 12:40:05
@Strawberry:那会计数'0'和'空'作为相同的值 – Andomar 2013-02-23 12:40:30
是的,它会!!! – Strawberry 2013-02-23 12:42:47