SQL GROUPBY语句详解

GROUP BY 子句在 SQL 中用于按照一个或多个列对查询结果进行分组。

  1. 基本用法:根据一个列进行分组。
SELECT column1, aggregate_function(column2)
FROM table
GROUP BY column1;

举例:
假设有一个名为 employees 的表,包含员工的姓名和工资信息,现在想按照员工的职位对工资进行分组,计算每个职位的平均工资。

SELECT position, AVG(salary)
FROM employees
GROUP BY position;
  1. 多个列分组:根据多个列进行分组。
SELECT column1, column2, aggregate_function(column3)
FROM table
GROUP BY column1, column2;

举例:
假设有一个名为 sales 的表,包含销售员的姓名、产品名称和销售量信息,现在想按照销售员和产品对销售量进行分组,计算每个销售员每个产品的总销售量。

SELECT salesperson, product, SUM(quantity)
FROM sales
GROUP BY salesperson, product;
  1. 过滤分组结果:使用 HAVING 子句过滤分组后的结果。
SELECT column1, aggregate_function(column2)
FROM table
GROUP BY column1
HAVING condition;

举例:
假设有一个名为 orders 的表,包含订单的订单号和订单金额信息,现在想按照订单号对订单金额进行分组,筛选出订单金额大于 1000 的订单。

SELECT order_number, SUM(amount)
FROM orders
GROUP BY order_number
HAVING SUM(amount) > 1000;
  1. GROUP BY 和 ORDER BY 结合使用:对分组结果进行排序。
SELECT column1, aggregate_function(column2)
FROM table
GROUP BY column1
ORDER BY column1 ASC|DESC;

举例:
假设有一个名为 customers 的表,包含客户的姓名和订单数量信息,现在想按照订单数量对客户进行分组,并根据订单数量进行降序排序。

SELECT customer, COUNT(order_number) AS order_count
FROM customers
GROUP BY customer
ORDER BY order_count DESC;

已发布

分类

标签:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注