PostgreSQL聚合查询
PostgreSQL是一种开源的关系型数据库管理系统,它提供了丰富的聚合查询功能。
在介绍不同的聚合查询之前,我们先假设以下表结构和样例数据:
表名: students
| id | name | age | grade |
|----|--------|-----|-------|
| 1 | Alice | 18 | 12 |
| 2 | Bob | 17 | 11 |
| 3 | Charlie| 19 | 12 |
| 4 | David | 16 | 10 |
| 5 | Ethan | 18 | 11 |
接下来,介绍一些常见的聚合查询及其实现方式:
1. COUNT函数:用于计算行数或非NULL值的数量。
- 统计学生的总人数:`SELECT COUNT(*) FROM students;`
- 统计年龄大于等于18岁的学生人数:`SELECT COUNT(*) FROM students WHERE age >= 18;`
2. SUM函数:用于计算指定列的总和。
- 计算所有学生的年龄总和:`SELECT SUM(age) FROM students;`
- 计算12年级学生的年龄总和:`SELECT SUM(age) FROM students WHERE grade = 12;`
3. AVG函数:用于计算指定列的平均值。
- 计算所有学生的平均年龄:`SELECT AVG(age) FROM students;`
- 计算10年级学生的平均年龄:`SELECT AVG(age) FROM students WHERE grade = 10;`
4. MAX函数:用于找到指定列的最大值。
- 找到年龄最大的学生:`SELECT MAX(age) FROM students;`
- 找到12年级学生中年龄最大的学生:`SELECT MAX(age) FROM students WHERE grade = 12;`
5. MIN函数:用于找到指定列的最小值。
- 找到年龄最小的学生:`SELECT MIN(age) FROM students;`
- 找到10年级学生中年龄最小的学生:`SELECT MIN(age) FROM students WHERE grade = 10;`
6. GROUP BY子句:用于按指定的列对结果进行分组,并对每个组进行聚合计算。
- 按年级统计每个年级的学生人数:`SELECT grade, COUNT(*) FROM students GROUP BY grade;`
- 按年级统计每个年级的平均年龄:`SELECT grade, AVG(age) FROM students GROUP BY grade;`
这些只是一些基本的聚合查询示例,PostgreSQL还支持更复杂的聚合查询操作,如HAVING子句、DISTINCT关键字等。在实际应用中,可以根据具体需求使用合适的聚合函数和组合条件来实现更复杂的查询操作。