sql - 合并 2 个 SQL 查询的结果
问题描述
我有两张表,我想比较相似的数据。以下查询提供每个表中的员工计数:
SELECT Extract_Month, COUNT(Employee_Number) as Staff
FROM Staff
GROUP BY Extract_Month;
SELECT Extract_Month, COUNT(Employee_Number) as MX
FROM Staff_mx
GROUP BY Extract_Month;
结果如下
2019-04-01 17246
2019-05-01 17194
2019-06-01 17252
2019-04-01 17140
2019-05-01 17194
2019-06-01 17434
我想要一个查询以以下格式组合结果:
Staff MX
2019-04-01 17246 17140
2019-05-01 17194 17194
2019-06-01 17252 17434
我试过这个,其中包含我想要的结果,但没有正确呈现它们:
SELECT s.Extract_Month, COUNT(s.Employee_Number) as Staff, COUNT(mx.Employee_Number) as MX
FROM Staff s
LEFT JOIN
staff_mx mx
ON s.Employee_Number = mx.Employee_Number
AND s.Extract_Month = mx.Extract_Month
GROUP BY s.Extract_Month
UNION ALL
SELECT mx.Extract_Month, COUNT(s.Employee_Number) as Staff, COUNT(mx.Employee_Number) as MX
FROM Staff s
RIGHT JOIN
staff_mx mx
ON s.Employee_Number = mx.Employee_Number
AND s.Extract_Month = mx.Extract_Month
GROUP BY mx.Extract_Month
这给了我以下,但不是预期的结果:
Staff MX
2019-04-01 17246 16830
2019-05-01 17194 16820
2019-06-01 17252 16784
2019-04-01 16830 17140
2019-05-01 16820 17194
2019-06-01 16784 17434
任何帮助,将不胜感激!
解决方案
您可以使用JOIN
:
SELECT s.Extract_Month, s.staff, sm.mx
FROM (SELECT Extract_Month, COUNT(Employee_Number) as Staff
FROM Staff
GROUP BY Extract_Month
) s JOIN
(SELECT Extract_Month, COUNT(Employee_Number) as MX
FROM Staff_mx
GROUP BY Extract_Month
) sm
ON sm.Extract_Month = s.Extract_Month;
如果两个表的月份不一定相同,则使用FULL JOIN
and COALESCE()
:
SELECT COALESCE(s.Extract_Month, sm.Extract_Month) as Extract_Month,
COALESCE(s.staff, 0) as staff,
COALESCE(sm.mx, 0) as mx
FROM (SELECT Extract_Month, COUNT(Employee_Number) as Staff
FROM Staff
GROUP BY Extract_Month
) s FULL JOIN
(SELECT Extract_Month, COUNT(Employee_Number) as MX
FROM Staff_mx
GROUP BY Extract_Month
) sm
ON sm.Extract_Month = s.Extract_Month;
推荐阅读
- php - php查询ldap记录,包括日期/时间戳字段
- c - 一棵二叉树中有多少个节点只有一个孩子?
- akka-stream - 重用 Source[ByteString, Any] 的任何方式(不将其全部保存在内存中)
- sql - PostgreSQL:从 JSONB 列中删除值
- r - 在 R 中使用 ggplot 为两个不同的组创建折线图
- mysql - 如果匹配模式,则删除字符串的匹配部分
- react-native - 更新到 React Native 0.56.0 后非项目文件中的 Jest SyntaxError
- python-2.7 - 不理解 sess.run 中的 feed_dict
- laravel - Laravel 5.2 withTrashed
- vue.js - 在模板中的同一元素上结合 v-for 和 v-show