[SparkSQL][COUNT(*COLS)]关于count(col1,col2)的使用记录
作者:互联网
结论
功能
count(col1, col2) 可以统计 多个字段的非空记录
要求
- count()内含多个字段时,若有一个字段的记录为Null 则该条记录不会被统计
- count()内含多个字段时,非sparksql引擎需要加distinct 字段限制
- count()内含多个字段时,和以下语句不同
select count(*)
from (
select distinct col1, col2
from table1
) a
distinct 子查询时,对于null数据,还是会有所保留,count(*)统计的是数据行数
count(col1,col2)统计记录时,count(null)=0,带有null数据时,记录不算
+---+-----+-----+
| id| name|score|
+---+-----+-----+
| 1|alice| 90|
| 2| null| 85|
| 3|alice| 95|
| 4| Bob| 100|
| 5|alice| 95|
+---+-----+-----+
>>> spark.sql("""
select count(distinct name,score)
from table1
""").show()
+---------------------------+
|count(DISTINCT name, score)|
+---------------------------+
| 3|
+---------------------------+
>>> spark.sql("""
select count(name,score)
from table1
""").show()
+------------------+
|count(name, score)|
+------------------+
| 3|
+------------------+
>>> spark.sql("""
select count(*)
from(
select distinct name, score
from table1
) a
""").show()
+--------+
|count(1)|
+--------+
| 4|
+--------+
标签:COUNT,count,name,distinct,col2,字段,score,select 来源: https://www.cnblogs.com/riaris/p/15720732.html