查询从MySQL中获取数据按两列中的数据分组

时间:2016-06-19 13:49:11

标签: mysql

我有一个如下表格结构:

Department table

我正在尝试编写一个查询,以使用dept_id显示一个部门的总员工,如下所示:

Output table for dept_id 1

使用来自另一个表的连接获取类别名称: 类别表包含以下字段:

id | Cat_Name

我正在尝试使用Group by

来做同样的事情

以下是我对MySQL查询的尝试:(目前我没有使用连接,因为我知道我可以稍后使用连接来获取类别名称。)

我关注如何以上面显示的格式获取数据。

  1. SELECT * FROM dept_data WHERE dept_id = 1 GROUP BY year
  2. SELECT * FROM dept_data WHERE dept_id = 1 GROUP BY year,category_id
  3. 任何可以帮助我的人?​​

    由于

2 个答案:

答案 0 :(得分:1)

就像Shaharyar在评论中写道的那样,它被称为“支点”。

您需要一个条件聚合:

SELECT year AS Year,
    MAX(CASE WHEN category_id = 1 THEN total_employees END) AS `Category 1 (Name)`,
    MAX(CASE WHEN category_id = 2 THEN total_employees END) AS `Category 2 (Name)`
FROM dept_data
WHERE dept_id = 1
GROUP BY year

答案 1 :(得分:0)

最后,我想出了一个能够满足我需要的查询。

感谢Paul Spiegel。

它实际上只是保罗·斯皮格尔答案的修改版本。

SELECT year AS Year, 
MAX(IF(category_id = 1, total_employees, NULL)) AS Category1,
MAX(IF(category_id = 2, total_employees, NULL)) AS Category2
FROM dept_data WHERE dept_id = 1 GROUP BY year

我希望它也可以帮助别人。