10分钟掌握GROUP BY语法

GROUP BY 是SQL语句中非常强大的功能,它能够对查询结果进行分组,以实现对数据集的统计和汇总。通过GROUP BY,我们可以轻松地回答诸如“每个部门的平均薪水是多少?”或者“每种产品的销售量是多少?”这样的问题。本文将用10分钟的时间,通过几个简单的例子,来掌握GROUP BY的语法和用法。

首先,我们来看一个简单的员工信息表:

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    department VARCHAR(50),
    salary DECIMAL(10,2)
);

INSERT INTO employees (id, name, department, salary) VALUES
(1, 'Alice', 'Sales', 50000),
(2, 'Bob', 'Marketing', 60000),
(3, 'Charlie', 'Sales', 55000),
(4, 'David', 'HR', 45000),
(5, 'Eve', 'Marketing', 65000);

现在,我们想要知道每个部门的平均薪水是多少。使用GROUP BY,我们可以这样写:

SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department;

这条语句会返回每个部门的平均薪水。这里,我们使用了聚合函数AVG()来计算平均薪水,并且使用了GROUP BY来按部门分组。

接下来,我们来看一个更复杂的例子。假设我们有一个订单表:

CREATE TABLE orders (
    id INT PRIMARY KEY,
    product VARCHAR(50),
    quantity INT,
    price DECIMAL(10,2)
);

INSERT INTO orders (id, product, quantity, price) VALUES
(1, 'Widget', 10, 100.00),
(2, 'Gadget', 5, 200.00),
(3, 'Widget', 20, 100.00),
(4, 'Gadget', 15, 200.00),
(5, 'Widget', 10, 100.00);

我们想要知道每种产品的总销售额。使用GROUP BY,我们可以这样写:

SELECT product, SUM(quantity * price) AS total_revenue
FROM orders
GROUP BY product;

这条语句会返回每种产品的总销售额。这里,我们使用了聚合函数SUM()来计算总销售额,并且使用了GROUP BY来按产品分组。

最后,我们来看一个带有WHERE子句的例子。假设我们想要知道每个部门中薪水高于50000的员工的平均薪水。使用GROUP BY,我们可以这样写:

SELECT department, AVG(salary) AS average_salary
FROM employees
WHERE salary > 50000
GROUP BY department;

这条语句会返回每个部门中薪水高于50000的员工的平均薪水。这里,我们使用了WHERE子句来过滤掉薪水低于或等于50000的员工,并且使用了GROUP BY来按部门分组。

通过以上几个例子,我们可以看到GROUP BY的强大之处。它能够帮助我们快速地对数据进行分组和汇总,从而得出有用的统计信息。掌握GROUP BY的语法和用法,可以让我们在处理数据时更加高效和灵活。

正文到此结束
评论插件初始化中...
Loading...