C/C++教程

[SparkSQL][COUNT(*COLS)]关于count(col1,col2)的使用记录

本文主要是介绍[SparkSQL][COUNT(*COLS)]关于count(col1,col2)的使用记录,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

结论

功能

count(col1, col2) 可以统计 多个字段的非空记录

要求

  1. count()内含多个字段时,若有一个字段的记录为Null 则该条记录不会被统计
  2. count()内含多个字段时,非sparksql引擎需要加distinct 字段限制
  3. 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|
+--------+
这篇关于[SparkSQL][COUNT(*COLS)]关于count(col1,col2)的使用记录的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!