全部,有些东西不起作用。我试图列出每个人工作的每种事件的数量。
Out put应包括姓氏,名字,event_type和事件数量。
下面是我写的mysql查询,
select staff.lname, staff.fname, event.event_type, count(event_staff.event_id)
from `event_staff`
JOIN event
ON event.event_id = event_staff.event_id
JOIN staff
ON staff.ssn = event_staff.ssn
group by event_staff.ssn
上述查询的结果:
以下是表格:
显然,我的查询结果并没有产生正确的结果。我将不胜感激任何帮助。谢谢。
答案 0 :(得分:1)
您还应按事件类型进行分组。通常,最好始终按照您未聚合的选定字段进行分组。但是:
group by staff.ssn, event.event_type
...应该按照staff.lname
进行操作,staff.fname
在功能上依赖于ssn
。
答案 1 :(得分:1)
通过您的查询,您将获得一个人工作的总事件(所有类型)的计数。为了计算每种类型的事件,请在event_type
clauese中添加group by
,它将按预期工作:
select staff.lname, staff.fname, event.event_type, count(event_staff.event_id)
from `event_staff`
JOIN event
ON event.event_id = event_staff.event_id
JOIN staff
ON staff.ssn = event_staff.ssn
group by event_staff.ssn,event.event_type;
希望它有所帮助!
答案 2 :(得分:1)
GROUP BY
应该包含SELECT
中所有未加聚合的列。我还推荐表别名:
select s.lname, s.fname, e.event_type, count(es.event_id)
from event_staff es JOIN
event e
ON e.event_id = es.event_id JOIN
staff s
ON s.ssn = es.ssn
group by s.lname, s.fname, e.event_type;
从您的角度来看,真正重要的是在event_type
中加入GROUP BY
。
注意:您仍然可以按ssn
进行汇总 - 如果两个不同的工作人员可能具有相同的名称,这一点很重要。