Sql 列的聚合函数(如果有null)?

Sql 列的聚合函数(如果有null)?,sql,presto,Sql,Presto,如果我在具有如下数值的列上运行聚合函数: Select Name, count(Miles) as number from tbl 如果某些名称在Miles列中有null值,将如何处理 如果它是一个有其他值的名称,它将不会被计数,但是如果它是一个只有空值且没有数字的名称,那么它将如何显示在输出中 请检查一下这个,也许你这里有东西 在这里您可以找到如何处理空值,请参见下面的示例 CREATE TABLE #tbl ( NAME VARCHAR(10), Miles VARCHAR

如果我在具有如下数值的列上运行聚合函数:

Select Name, count(Miles) as number from tbl
如果某些名称在
Miles
列中有
null
值,将如何处理


如果它是一个有其他值的名称,它将不会被计数,但是如果它是一个只有空值且没有数字的名称,那么它将如何显示在输出中

请检查一下这个,也许你这里有东西

在这里您可以找到如何处理空值,请参见下面的示例

CREATE TABLE #tbl
(
    NAME VARCHAR(10),
    Miles VARCHAR(10) NULL
)


INSERT #tbl VALUES('A','A'),('B','B'),('C','C'),('D','D'),
('A','A'),('B','B'),('C','C'),('D','D'),
('A','A'),('B','B'),('C','C'),('D','D'),('D',NULL)
1) 先选择查询

输出

2) 第二选择查询

输出

从tbl中选择名称,将(英里)数作为数字

我想你也有
。。。在查询中按名称分组

如果它是一个有其他值的名称,它将不会被计数,但是如果它是一个只有空值且没有数字的名称,那么它将如何显示在输出中

它将以0计数包含在输出中

例如:

presto:default> SELECT name, count(value)
             -> FROM (VALUES ('a', 1), ('b', NULL)) t(name, value)
             -> GROUP BY name;
 name | _col1
------+-------
 b    |     0
 a    |     1
(2 rows)
(在Presto 327上验证)

如果某些名称在“英里”列中有空值,将如何处理?所有聚合函数都忽略空值。即,对于数据集{1,NULL,3},它们将显示MIN=1,MAX=3,COUNT=2,AVG=2。如果某个聚合函数将NULL值考虑在内,则必须在其描述中单独提及。如果该名称只有NULL值而没有数字,那么该名称将如何显示在输出中?在这种情况下,名称将以计数(英里)=0作为输出显示。
Select Name, count(ISNULL(Miles,'YOU DEFAULT VALUE')) as number 
from #tbl
GROUP BY NAME
presto:default> SELECT name, count(value)
             -> FROM (VALUES ('a', 1), ('b', NULL)) t(name, value)
             -> GROUP BY name;
 name | _col1
------+-------
 b    |     0
 a    |     1
(2 rows)