CodeGym /课程 /SQL SELF /聚合函数入门

聚合函数入门

SQL SELF
第 7 级 , 课程 0
可用

聚合函数... 这些东西在数据分析的世界里简直就是魔法师!它们能把几百万行数据变成精炼又好懂的结果。有了它们,我们能计数、找最小最大值、算平均数,还能做一堆别的操作。现在我们一步步来搞明白。

聚合函数 —— 这是SQL里专门用来对一组行做操作并返回单一结果的特殊函数。打个比方,这就像你统计你早上喝咖啡的所有数据,比如:你一周喝了多少杯,加没加糖,或者连续几天都加了奶油。

聚合函数能解决的典型问题:

  • 统计表里总共有多少条记录。
  • 找出数值列里的最小值或最大值。
  • 把某一列的值都加起来。
  • 算出某一列的平均值。
  • 筛选出唯一值。

底层到底是怎么工作的?

SQL会在SELECT选出数据后再执行聚合函数。比如你写了SUM()或者AVG(),SQL会先把数据收集好,然后只对选中的行做计算。

PostgreSQL里的主要聚合函数

来点实际的,看看我们最常用的五个主角:

  1. COUNT() —— 统计行数。
  2. SUM() —— 把数值列的值都加起来。
  3. AVG() —— 算平均值。
  4. MIN() —— 找最小值。
  5. MAX() —— 找最大值。

聚合函数的使用例子

  1. COUNT()计数

COUNT()函数可以统计表里总共有多少行,或者某一列里非空值的数量。

举个例子:假设我们有个叫students的表,存着学生的信息:

id name age grade
1 Otto Art 20 85
2 Maria Chi 22 90
3 Alex Lin 21 78
4 Anna Song 23 NULL

来统计一下学生总数:

SELECT 
    COUNT(*) AS total_students
FROM students;

结果:

total_students
4

现在我们来统计一下有grade的学生数量:

SELECT 
    COUNT(grade) AS students_with_grades
FROM students;

结果:

students_with_grades
3

为啥会这样?因为COUNT(column)会忽略NULL值。

  1. SUM()求和

SUM()函数用来把数值列里的所有值加起来。

举个例子:来看看我们的学生总共得了多少分。

SELECT 
    SUM(grade) AS total_grades
FROM students;

结果:

total_grades
253

注意:如果这一列有NULL,它们在求和时会被直接忽略掉。

  1. AVG()算平均值

AVG()函数会算出某一列所有数值的平均数。

举个例子:来算一下学生的平均分。

SELECT 
    AVG(grade) AS average_grade
FROM students;

结果:

average_grade
84.33

你可能注意到了,NULL又被忽略了。

  1. MIN()MAX()找最小最大值

有时候我们要找最小值或最大值,这就用到MIN()MAX()

举个例子:找出最年轻和最年长的学生。

SELECT 
    MIN(age) AS youngest_student, 
    MAX(age) AS oldest_student
FROM students;

结果:

youngest_student oldest_student
20 23

这些函数的更多细节我们下节课再聊。

认识NULL

关于NULL很快会有专门的讲座,但简单说,NULL就是没有值。啥都没有,空的,啥都不是!

假设我们有个students表,存着学生的信息:

id name age grade hobbie
1 Otto Art 20 85
2 Maria Chi 22 90 跳舞
3 Alex Lin 21 78
4 Anna Song 23

名字和年龄总是有的,但分数和爱好可能没有。如果表格里的单元格啥都没有,那就说它包含NULL。NULL不是数字也不是字符串,它是一个特殊的代码,表示啥值都没有。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION