首页 > 解决方案 > 使用 group by 语句的结果计算平均值

问题描述

我有一个包含两个表的数据库。

借款人表

BorrowID | ClientID | BookID

客户表

ClientID | Occupation

借款人表中的 ClientID 是外键。

我正在尝试按职业获得平均借书数量。我可以通过以下查询获得每个职业的人数:

SELECT count(Occupation) as occupation_count, Occupation
FROM client
GROUP BY Occupation

我还可以通过以下查询获得每个职业的书籍数量:

SELECT client.Occupation, count(borrower.ClientID) AS books_per_occupation
FROM client
LEFT JOIN borrower
ON (borrower.ClientID=client.ClientID)
GROUP BY client.Occupation

问题是我不能将books_per_occupation除以occupation_count。
似乎子查询会是这样,但我似乎无法让它工作。

标签: mysqlsql

解决方案


如果我理解正确,您需要按职业划分的每个客户的书籍数量。如果是这样,您可以使用单个查询和count(distinct)

SELECT c.Occupation, count(b.ClientId) / count(distinct c.clientId) AS books_per_client
FROM client c LEFT JOIN
     borrower b
     ON b.ClientID = c.ClientID
GROUP BY c.Occupation;

推荐阅读