我有这个问题:
SELECT YEAR(`data`) AS ano, SUM(ativo) AS tempo_ativo
FROM rh.processamento
GROUP BY YEAR(`data`);
这个查询的结果是
ano tempo_ativo
2015 108247387
2016 172003845
这个查询:
SELECT YEAR(`data`) AS ano, SUM(tempo) AS tempo_extra
FROM rh.aprovacoes
WHERE tipo = 'BH' OR tipo = 'HE' AND estado=1
GROUP BY YEAR(`data`);
结果是:
ano tempo_extra
0 8768100
2015 -4410782
2016 -7213369
我做了这个查询来连接两个查询的结果:
SELECT YEAR(processamento.`data`) AS ano, SUM(ativo) AS tempo_ativo, SUM(tempo)/3600 AS tempo_extra
FROM rh.processamento
LEFT JOIN rh.aprovacoes ON processamento.`data`=aprovacoes.`data` AND (tipo = 'BH' OR tipo = 'HE') AND estado=1
GROUP BY YEAR(aprovacoes.`data`);
但是结果是错误的。 我需要这样的结果:
ano tempo_ativo tempo_extra
0 NULL 8768100
2015 108247387 -4410782
2016 172003845 -7213369
你们能帮帮我吗?
最佳答案
如果第二个查询总是返回第一个查询的所有记录,那么您可以尝试使用LEFT JOIN
:
SELECT t1.ano, tempo_extra, tempo_ativo
FROM (
SELECT YEAR(`data`) AS ano, SUM(tempo) AS tempo_extra
FROM rh.aprovacoes
WHERE tipo = 'BH' OR tipo = 'HE' AND estado=1
GROUP BY YEAR(`data`)
) AS t1
LEFT JOIN (
SELECT YEAR(`data`) AS ano, SUM(ativo) AS tempo_ativo
FROM rh.processamento
GROUP BY YEAR(`data`)
) AS t2 ON t1.ano = t2.ano
关于mysql - 加入 2 个查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35938676/