Mysql中常用分组,连接查询

在 MySQL 中,常用的函数和查询方式包括分组查询和连接查询。以下是一些常用的示例和解释:

分组查询

分组查询通常使用 GROUP BY 语句来汇总数据。常用的聚合函数包括 COUNT()SUM()AVG()MAX()MIN() 等。

示例

  1. 计算每个部门的员工数量

    SELECT department_id, COUNT(*) AS employee_count
    FROM employees
    GROUP BY department_id;
    
  2. 计算每个产品的总销售额

    SELECT product_id, SUM(sales_amount) AS total_sales
    FROM sales
    GROUP BY product_id;
    
  3. 获取每位员工的平均工资

    SELECT employee_id, AVG(salary) AS average_salary
    FROM salaries
    GROUP BY employee_id;
    

连接查询

连接查询用于从两个或多个表中获取数据,常用的连接方式包括内连接(INNER JOIN),左连接(LEFT JOIN),右连接(RIGHT JOIN),和全连接(FULL OUTER JOIN)。

示例

  1. 内连接:获取员工及其对应的部门信息

    SELECT e.employee_id, e.name, d.department_name
    FROM employees e
    INNER JOIN departments d ON e.department_id = d.department_id;
    
  2. 左连接:获取所有员工及其对应的部门信息(包括没有部门的员工)

    SELECT e.employee_id, e.name, d.department_name
    FROM employees e
    LEFT JOIN departments d ON e.department_id = d.department_id;
    
  3. 右连接:获取所有部门及其对应的员工信息(包括没有员工的部门)

    SELECT e.employee_id, e.name, d.department_name
    FROM employees e
    RIGHT JOIN departments d ON e.department_id = d.department_id;
    
  4. 全连接(在 MySQL 中没有直接支持,可以使用左连接和右连接结合实现):

    SELECT e.employee_id, e.name, d.department_name
    FROM employees e
    LEFT JOIN departments d ON e.department_id = d.department_id
    UNION
    SELECT e.employee_id, e.name, d.department_name
    FROM employees e
    RIGHT JOIN departments d ON e.department_id = d.department_id;
    

总结

  • 分组查询使用 GROUP BY 结合聚合函数来汇总数据。

  • 连接查询用于从多个表中提取相关数据,可以通过不同类型的连接来满足不同的需求。

希望这些示例能帮助你更好地理解 MySQL 中的分组和连接查询!