SQL COUNT() 函数示例
在线运行和编辑此教程中的代码
运行代码使用 COUNT(*) 统计行数
名为 products 的表包含公司销售的所有产品。COUNT(*) 子句可用于计算表中的行数。
SELECT
COUNT(*) AS number_of_rows
FROM products
|
|
|
321 |
使用 COUNT(DISTINCT …) 统计唯一值
COUNT(DISTINCT column) 语法用于统计某列中唯一值的数量。
例如,在 products 表中,每个产品都有对应的品牌。我们可以统计表中唯一的产品数量和品牌数量。
SELECT
COUNT(DISTINCT product_id) AS unique_product_count,
COUNT(DISTINCT brand_id) AS unique_brand_count
FROM products
|
|
|
|
321 |
9 |
结合 COUNT() 与 CASE WHEN 统计满足条件的行
COUNT(CASE WHEN condition THEN column END) 语法可用于计算满足某条件的行数。
例如,在 products 表中,每个产品都有一个 list_price。我们可以统计“expensive”(标价不低于 $500)的产品数量,以及其他产品的数量。
SELECT
COUNT(CASE WHEN list_price >= 500 THEN product_id END) AS expensive_product_count,
COUNT(CASE WHEN list_price < 500 THEN product_id END) AS cheap_product_count
FROM products
|
|
|
|
213 |
108 |
结合 COUNT() 与 GROUP BY 统计各组行数
COUNT() 可与 GROUP BY 搭配,用于获取每个分组中的行数。
例如,products 表包含 2016 至 2019 年的自行车型号。要查看各年份的分布情况,可以使用 COUNT(product_id) 并配合 GROUP BY model_year 来统计每年的产品数量。
SELECT
model_year,
COUNT(product_id) AS product_count
FROM products
GROUP BY model_year
|
|
|
|
2016 |
26 |
|
2017 |
85 |
|
2018 |
204 |
|
2019 |
6 |
结合 COUNT()、GROUP BY 与 HAVING 筛选分组
在示例 4 中,我们看到 COUNT() 可与 GROUP BY 一起使用。我们还可以借助 HAVING 子句,基于每组的行数来筛选分组。
例如,要找出产品数少于 50 的年份,可以使用以下语法。
SELECT
model_year
FROM products
GROUP BY model_year
HAVING COUNT(product_id) < 50
|
|
|
2016 |
|
2019 |
技术要求
COUNT() 是现代 SQL 各版本均可使用的函数。DataCamp 提供针对性的课程,帮助您在所选数据库系统的语境下掌握 SQL。以下是一些入门选项。我认为 Oracle 的差异可能最大,因为它有一些特定函数和额外功能。
进一步学习 SQL
继续在 DataCamp 学习 SQL。我还写了几篇其他教程供您入门,希望对您有所帮助。
另外,也可以考虑我们的 SQL Associate 认证,我认为这对您的简历很有帮助。

作为抖音的数据科学家兼佐治亚理工学院硕士生,我对数据科学怀有与生俱来的热情,并开辟了一条将技术、风险与持续自我提升相融合的独特职业路径。在 Merchant Platform 担任数据科学家期间,我运用复杂的数据模型降低风险、打击欺诈,每周为公司节省数千美元。我通过大量自学不断打磨专业能力,获得多家知名机构的认证,并熟练掌握深度学习、TensorFlow 和社会网络分析等领域。在 DataCamp 及其他教育平台上,我以此积累的知识启发并教育他人,在数据科学领域开辟新路径,也证明了只要有决心并掌握正确的数据,任何风险都能转化为机遇。
SQL COUNT() 常见问题
COUNT() 能只统计特定的行吗?
可以,您可以将 WHERE 子句与 COUNT() 搭配,只统计满足特定条件的行。例如:
COUNT(*) 与 COUNT(column_name) 有什么区别?
COUNT(*) 会统计表中的所有行,包括含有 NULL 的行。COUNT(column_name) 只统计指定列不为 NULL 的行。
可以用 COUNT() 统计去重后的值吗?
可以,您可以将 COUNT() 与 DISTINCT 关键字结合,统计某列中的唯一值:
COUNT() 如何处理重复行?
默认情况下,COUNT(*) 会统计所有行,包括重复行。若只统计唯一行,请使用 COUNT(DISTINCT column_name)。
不言而喻,统计行数或取值是数据分析中的重要环节。因此,SQL 提供了专门的函数来完成这项工作。无论是识别重复值、计算分组总数,还是筛选数据,
COUNT()函数都能派上用场。在本文中,我将展示
COUNT()的多种用法,从基础语法到结合GROUP BY和HAVING的更有意思的案例。您也可以考虑报名我们的 SQL Associate 认证,这是学习与提升简历的好方式。什么是 SQL 中的 COUNT() 函数?
COUNT()函数返回满足某个条件的行数。SQL COUNT() 语法
COUNT()的基本语法如下。语法的不同变体可实现不同目的。
COUNT(*)语法用于统计表中的总行数COUNT(DISTINCT column)语法用于统计某列中不重复值的数量COUNT(CASE WHEN condition THEN column END)语法用于统计满足条件的取值数量。将
COUNT()与GROUP BY搭配,可用于统计各组包含的行数。将
COUNT()与HAVING搭配,可根据每组的行数来筛选分组。我们将通过下面的示例来说明。