📜  SQLite HAVING子句(1)

📅  最后修改于: 2023-12-03 15:20:18.146000             🧑  作者: Mango

SQLite HAVING子句

在使用SQLite进行数据库查询时,我们可以使用HAVING子句来过滤GROUP BY子句分组后的结果。

语法

HAVING子句的基本语法如下:

SELECT column_name1, column_name2, ...
FROM table_name
GROUP BY column_name1, column_name2, ...
HAVING condition;
  • column_name1, column_name2, ...:需要查询的列名。
  • table_name:查询的表名。
  • GROUP BY column_name1, column_name2, ...:按指定的列对结果进行分组。
  • condition:HAVING子句中的条件,用于过滤GROUP BY子句分组后的结果。
示例

现在我们有一个表students,表中包含每个学生的姓名、班级、课程名以及成绩。我们要查询每个班级的平均成绩,并只返回平均成绩大于等于80分的班级。

SELECT class, AVG(score) AS avg_score
FROM students
GROUP BY class
HAVING avg_score >= 80;

以上查询语句中,我们首先按班级进行分组,然后使用AVG函数求出每个班级的平均成绩。最后使用HAVING子句过滤出平均成绩大于等于80分的班级。

注意事项
  • HAVING子句必须与GROUP BY子句一起使用。
  • 在HAVING子句中只能使用聚合函数和GROUP BY子句中的列名。
  • 在HAVING子句中不允许使用别名,需要使用聚合函数的完整名称。例如上面的示例中,我们不能使用having avg_score >= 80,而应该使用having AVG(score) >= 80
总结

HAVING子句是用于过滤GROUP BY子句分组后结果的非常有用的功能。我们可以利用HAVING子句来筛选出符合特定条件的分组结果。