mysql - SQL 计数和平均值

标签 mysql sql count

我的 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)

现在我想实现两个查询:

  1. JID,每位撰写文章且年龄超过 62 岁的记者的姓名以及他撰写的文章数量。
  2. 每位拥有 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/

相关文章:

PHP 搜索数据库和目录结构并匹配在一起

mysql - SQL - 从一行中获取特定值然后使用该值

sql - 有没有办法在一个 SELECT 语句中执行此操作?使用分组依据

SQL Server sp_ExecuteSQL 和执行计划

python - Pandas Dataframe 特殊计数

sql - Oracle 中的 SUM(COUNT())

mysql - 使用 "IN"不区分大小写的 SELECT

html - Laravel - 将两个选择值插入数据库

c# - 更新linq中的单行

php - 如何增加 php/mysql 中的搜索计数?