用groupby语句的结果计算平均值

jpfvwuh4  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(401)

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

  1. BorrowID | ClientID | BookID

客户端表

  1. ClientID | Occupation

表中的clientid是外键。
我想按职业来计算借书的平均数量。我可以通过此查询获得每个职业的人数:

  1. SELECT count(Occupation) as occupation_count, Occupation
  2. FROM client
  3. GROUP BY Occupation

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

  1. SELECT client.Occupation, count(borrower.ClientID) AS books_per_occupation
  2. FROM client
  3. LEFT JOIN borrower
  4. ON (borrower.ClientID=client.ClientID)
  5. GROUP BY client.Occupation

问题是我不能把每个职业的书除以职业数。
这似乎是一个子查询的方式,但我似乎无法让它工作。

uxh89sit

uxh89sit1#

如果我理解正确的话,你需要按职业列出每个客户的图书数量。如果是这样,您可以使用单个查询 count(distinct) :

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

相关问题