【发布时间】:2019-06-26 03:59:25
【问题描述】:
我正在尝试显示几个分支机构及其对应的经理姓名、主管人数以及男性和女性员工的人数。但是,当我执行查询时会弹出以下错误消息,“列 'STAFF_T.stf_first_name' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。”请帮帮我:)
SELECT b.brc_id AS 'Branch ID',
s.stf_first_name AS 'Manager First Name',
s.stf_last_name AS 'Manager Last Name',
(SELECT COUNT (sa.stf_position) FROM STAFF_T sa
WHERE (sa.stf_position = 'Supervisor')) AS 'Number of Supervisor',
(SELECT COUNT (sb.stf_position) FROM STAFF_T sb
WHERE (sb.stf_position = 'Staff') AND
(sb.stf_gender = 'Male')) AS 'Male Staff',
(SELECT COUNT (sc.stf_position) FROM STAFF_T sc
WHERE (sc.stf_position = 'Staff') AND
(sc.stf_gender = 'Female')) AS 'Female Staff'
FROM BRANCH_T b, STAFF_T s
WHERE (b.brc_id = s.stf_brc_id) AND (b.brc_manager = s.stf_id)
GROUP BY b.brc_id
This is my current output 它目前显示主管、男性员工和女性员工的总数。它应该根据每个分支 id 显示主管和员工的数量。
【问题讨论】:
-
错误信息是不言自明的。该组的哪一行应该用于该值?分组时,如果未在
GROUP BY中列出,则该列只能与作用于整个组的聚合函数一起使用。 -
你能放一个预期输出的样本吗?
-
错误说明了一切,您需要在
GROUP BY子句中包含列 s.stf_first_name,s.stf_last_name -
试过了,还是不行>_
-
@Unknown66 MJoy 给了你答案。如果您尝试过但仍然无效,请编辑您的问题以显示新代码。
标签: sql