Group by 连词
时间: 2025-01-04 11:33:28 浏览: 4
### SQL 中 `GROUP BY` 子句的使用方法
#### 1. 基本概念
`GROUP BY` 是一种用于将数据按照一个或多个列进行分组的方法,以便能够应用聚合函数对每一组内的记录执行计算。这类似于电子表格软件中的数据透视表功能[^3]。
#### 2. 语法结构
基本的 `GROUP BY` 查询语法规则如下:
```sql
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE condition
GROUP BY column_name;
```
这里的关键部分包括选择要显示的列以及应用于这些列上的聚合函数(如 `COUNT()`、`SUM()`、`AVG()` 等)。需要注意的是,在选择了非聚集列的情况下,该列也应当出现在 `GROUP BY` 后面列出的字段列表里[^1]。
#### 3. 多列分组
当需要基于多于一列的标准来进行分组时,可以在 `GROUP BY` 关键词后指定多个列名,并用逗号隔开。这样可以创建更细粒度的数据分类[^2]。
#### 4. 结合 HAVING 进行过滤
为了进一步筛选由 `GROUP BY` 创建的结果集,可利用 `HAVING` 条件表达式来限定哪些组应该被包含进来。不同于普通的 `WHERE` 子句,`HAVING` 能够操作已经经过汇总后的数值。
#### 5. 实际案例展示
下面给出一些具体的例子说明如何运用上述知识点构建有效的 `GROUP BY` 查询:
- **按部门统计员工数量**
```sql
SELECT department_id, COUNT(*) AS employee_count
FROM employees
GROUP BY department_id;
```
- **获取各产品类别的销售总额**
```sql
SELECT category, SUM(sales_amount) as total_sales
FROM sales_records
GROUP BY category;
```
- **找出订单金额超过特定阈值的商品种类及其对应的最高单价**
```sql
SELECT product_type, MAX(unit_price) as max_unit_price
FROM order_items
WHERE order_total > 1000
GROUP BY product_type
HAVING MAX(unit_price) >= 50;
```
阅读全文