Count和Distinct SQL查询

时间:2017-07-03 20:11:51

标签: mysql sql count distinct

我有一个图书表,其中包含以下列:

Book_Id   User_Id
001       1
002       2
001       1
004       2
005       3
006       3
007       2
008       2
009       1

哪里

  

Book_Id - 用户阅读的书籍的标识符; User_Id - 标识符   读者/用户。

我们假设User1读了三次书,但其中有两本是相同的,所以用户1读了2本不同的书(001和009)。用户2阅读4本不同的书籍,而用户3阅读2本不同的书籍。 总体而言,有2个用户阅读2本不同的书籍,1个用户阅读4本不同的书籍。 预期产出如下:

Distinct_Books_Count --- User_Count
2                           2
4                           1

我尝试了以下内容:

  

SELECT COUNT(DISTINCT Book_Id),COUNT(User_Id)FROM Books GROUP BY   USER_ID

但我收到下表:

Distinct_Books_Count  User_Count
2                     3
4                     4
2                     2

那么任何替代解决方案或变化?

1 个答案:

答案 0 :(得分:2)

我称之为“直方图直方图”查询。您可以使用两个group by s来执行此操作:

SELECT num_books, COUNT(*)
FROM (SELECT b.User_Id, COUNT(DISTINCT Book_Id) as num_books
      FROM Books b
      GROUP BY User_Id
     ) b
GROUP BY num_books
ORDER BY num_books;