MySQL Query:使用group by并获得不真实的结果

时间:2017-01-07 13:11:20

标签: mysql

我正在尝试写一个查询而且我被卡住了。 以前我有两张桌子,一张有工作细节,另一张有员工详细资料。现在我从employee表中选取了一列并将其添加到作业表中,在尝试使用group by编写查询时导致了不真实的结果。

我的查询:

 SELECT SAL, COUNT(COMM), COUNT(EMPNO) FROM EMPLOYEE, JOB GROUP BY JOBCODE;

输出:

+---------+-------------+--------------+
| SAL     | COUNT(COMM) | COUNT(EMPNO) |
+---------+-------------+--------------+
| 3000.00 |           4 |           12 |
| 3000.00 |           4 |            4 |
| 3000.00 |           0 |            4 |
+---------+-------------+--------------+

虽然应该是:

+---------+-------------+--------------+
| SAL     | COUNT(COMM) | COUNT(EMPNO) |
+---------+-------------+--------------+
| 3000.00 |           1 |            3 |
| 1800.00 |           1 |            1 |
| 2000.00 |           0 |            1 |
+---------+-------------+--------------+

基本上,我获得COMM人数的4倍,每EMPLOYEE人数增加4倍JOB。另外,我只得到三个SAL

中的一个

1 个答案:

答案 0 :(得分:1)

您的问题不仅仅是GROUP BY,而是JOIN - 或者缺乏问题。

非常简单的规则:从不FROM子句中使用逗号。 始终使用正确的JOIN语法:

SELECT JOBCODE, AVG(SAL), COUNT(COMM), COUNT(EMPNO)
FROM EMPLOYEE e JOIN
     JOB j
     ON e.?? = j.??
GROUP BY JOBCODE;

您的问题没有提供足够的信息来指定表格之间的正确JOIN条件。

执行GROUP BY某事时,所有其他列都应具有聚合函数。