我的 SQL 查询遇到问题。
关系是
Journalist(JID(primary key), Name, Age, Salary, Chef -> Journalist.RID)
Article(AID(primary key), Title, Text)
Written(JID -> Journalist.JID, AID -> Article.AID, Date, Magazine)
现在我想实现两个查询:
- JID,每位撰写文章且年龄超过 62 岁的记者的姓名以及他撰写的文章数量。
- 每位拥有 10 名以上员工的厨师的 JID 以及员工的平均年龄。
我刚刚开始学习 SQL,所以在找出解决方案时遇到了很多困难。现在我得到了这个:
SELECT j.JID, j.Name
FROM Journalist j
WHERE j.Age > 61
以下是每位记者撰写的缺失文章数量。我必须使用 COUNT() 吗?
对于第二个查询,我得到了这样的结果:
SELECT j.JID, count(*)
FROM Journalist j
GROUP BY Chef
HAVING COUNT(*) > 9
这里我需要他的员工的平均值。我认为仅使用 AVG() 就能得出所有员工的平均值。
感谢您的帮助!
最佳答案
对于第一个查询Journalist who has write anarticle and is old over 62
,您必须稍微修改您的查询,因为您没有检查此人是否写过文章.
SELECT j.JID, j.Name
FROM Journalist j
WHERE j.Age > 61
AND j.JID IN (SELECT w.JID FROM written w)
要获取文章数量,您必须使用 COUNT
,但首先您必须形成使用 COUNT
的关系。试试这个
SELECT j.JID, J.Name, COUNT(a.AID) as [ArticlesWritten]
FROM Written w
JOIN Article a ON a.AID = w.AID
JOIN Journalist j ON w.JID = j.JID
GROUP BY j.JID, j.Name
对于关于 chef with 10 多名员工的第二个查询
,您需要向我们提供有关员工信息保存位置的更多信息。
关于mysql - SQL 计数和平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21412232/