SQL 不带聚合函数的GROUP BY

SQL 不带聚合函数的GROUP BY

在本文中,我们将介绍在SQL中如何使用GROUP BY子句来对数据进行分组,而不使用聚合函数。

阅读更多:SQL 教程

什么是GROUP BY

GROUP BY是一种SQL语句,用于将数据根据指定的列进行分组。通常情况下,GROUP BY会与聚合函数(如SUM、COUNT、AVG等)一起使用,以对每个分组计算一个总结值。然而,在某些情况下,我们可能只需要将数据按照某些列进行分组,而不进行聚合计算。

不带聚合函数的GROUP BY语法

在使用GROUP BY进行分组时,我们只需要在SELECT语句中加入GROUP BY子句,并指定要分组的列即可。下面是不带聚合函数的GROUP BY的基本语法:

SELECT 1, 2, ... 
FROM 表名 
GROUP BY 1, 2, ...
SQL

示例

为了更好地理解不带聚合函数的GROUP BY语句是如何工作的,我们将使用一个示例表来说明。假设我们有一个包含学生信息的表格,其中包括学生的姓名、学校和考试成绩。我们想要按照学校对学生进行分组,以便查看每个学校的学生数量。

首先,让我们创建一个名为students的表,并添加一些示例数据:

CREATE TABLE students (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  school VARCHAR(50),
  score INT
);

INSERT INTO students (id, name, school, score)
VALUES (1, '张三', '学校A', 85),
       (2, '李四', '学校B', 92),
       (3, '王五', '学校A', 78),
       (4, '赵六', '学校C', 88),
       (5, '钱七', '学校B', 95);
SQL

现在,我们可以使用不带聚合函数的GROUP BY语句来计算每个学校的学生数量:

SELECT school, COUNT(*) as student_count
FROM students
GROUP BY school;
SQL

执行上述查询后,我们将得到以下结果:

| school  | student_count |
|---------|---------------|
| 学校A   | 2             |
| 学校B   | 2             |
| 学校C   | 1             |
SQL

通过上述查询结果,我们可以看到每个学校有多少名学生。

注意事项

当使用不带聚合函数的GROUP BY语句时,需要注意以下几点:

  1. 只能在SELECT语句中包含被分组的列和与分组列有关的列。在上述示例中,我们只选择了school列进行分组,并选取了COUNT(*)作为结果。如果选择的列不包含在GROUP BY子句中,将会产生错误。
  2. 分组后的结果集将会按照分组列的值进行排序,且相同值的行会被合并为一行。在上述示例中,我们按照school列进行分组,所以查询结果按照学校的字母顺序进行排序。

总结

本文中,我们介绍了在SQL中如何使用GROUP BY进行分组,而不使用聚合函数。我们学习了不带聚合函数的GROUP BY语句的基本语法,并通过示例说明了其用法。需要注意的是,当使用不带聚合函数的GROUP BY语句时,只能在SELECT语句中包含被分组的列和与分组列有关的列,并且结果集将按照分组列的值进行排序。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册