【发布时间】:2014-10-31 01:49:52
【问题描述】:
我试图在两个不同的表中总结两个不同属性中的值,但在执行此操作时遇到问题。所以我的表格结构是:
位置
- 位置ID (PK)
- 类型
员工要求
- 请求 ID (PK)
- positionID(来自位置的 FK)
招聘
- 招聘ID(PK)
- requestID(来自 StaffRequest 的 FK)
定期招聘
- recruitmentID(PK, FK from Recruitment)
- numberOfWeeks
RegRecruitWeeklyTime
- ID (PK)
- recruitmentID(FK from RegularRecruitment)
- 小时
因此,这 5 个表与我要执行的查询有关。 RegRecruitWeeklyTime 表将包含正式员工的所有每周时间,并将特定 recruitmentID 的小时数相加将得出招聘人员每周工作的总小时数。 numberOfWeeks 表会告诉你新兵应该工作的小时数。
现在我想编写一个查询,它将给出总小时数和总周数,并按职位类型对它们进行分组。这必须在单个查询中完成。
所以,起初我写了两个查询来执行每个求和。
SELECT
Position.type AS 'Position',
SUM(RegularRecuitment.numberOfWeeks) AS 'Total Weeks'
FROM Position, StaffRequest, Recruitment, RegularRecuitment
WHERE
Recruitment.recruitmentID = RegularRecuitment.recruitmentID
AND
StaffRequest.requestID = Recruitment.requestID
AND
Position.positionID = StaffRequest.positionID
GROUP BY Position.type;
和
SELECT
Position.type AS 'Position',
SUM(RegRecruitWeeklyTime.hours) AS 'Total hours'
FROM Position, StaffRequest, Recruitment, RegularRecuitment, RegRecruitWeeklyTime
WHERE
RegRecruitWeeklyTime.recruitmentID = RegularRecuitment.recruitmentID
AND
Recruitment.recruitmentID = RegularRecuitment.recruitmentID
AND
StaffRequest.requestID = Recruitment.requestID
AND
Position.positionID = StaffRequest.positionID
GROUP BY Position.type;
如果我分别运行这两个查询,它可以正常工作并给我正确的结果。但是,当我像这样组合这两个查询时:
SELECT
Position.type AS 'Position',
SUM(RegRecruitWeeklyTime.hours) AS 'Total hours each week',
SUM(RegularRecuitment.numberOfWeeks) AS 'Total Weeks'
FROM Position, StaffRequest, Recruitment, RegRecruitWeeklyTime, RegularRecuitment
WHERE
RegRecruitWeeklyTime.recruitmentID = RegularRecuitment.recruitmentID
AND
Recruitment.recruitmentID = RegularRecuitment.recruitmentID
AND
StaffRequest.requestID = Recruitment.requestID
AND
Position.positionID = StaffRequest.positionID
GROUP BY Position.type;
'Total Weeks' 列乘以RegRecruitWeeklyTime 中的行数,表示结果为SUM(RegularRecuitment.numberOfWeeks) * COUNT(RegRecruitWeeklyTime.hours)。如果我将“总周数”列值除以 COUNT(RegRecruitWeeklyTime.hours),我会得到正确的答案,但我只是想知道是否有更好的方法。
谢谢...
【问题讨论】:
-
您使用的是 MySQL 还是 SQL Server?它们不是一回事。
标签: mysql sql-server database