我正在尝试写一个查询而且我被卡住了。
以前我有两张桌子,一张有工作细节,另一张有员工详细资料。现在我从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
答案 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
某事时,所有其他列都应具有聚合函数。