【问题标题】:How to Find ALL Most Common Values in SQL?如何在 SQL 中查找所有最常见的值?
【发布时间】:2014-08-08 05:45:25
【问题描述】:

如何在 SQL 中显示 ALL 最常见的值?

所以我有查询在下面显示最常见的值。

SELECT name, COUNT(*) AS popularity
FROM cattwo 
GROUP BY name 
ORDER BY popularity DESC 
LIMIT 1;

    +----------+------------+
    | name     | popularity |
    +----------+------------+
    | cat22610 |          7 |
    +----------+------------+

但是,当我显示前 10 个最常见的值时,结果是......

SELECT name, COUNT(*) AS popularity 
FROM cattwo 
GROUP BY name 
ORDER BY popularity DESC 
LIMIT 10;

    +----------+------------+
    | name     | popularity |
    +----------+------------+
    | cat22610 |          7 |
    | cat68704 |          7 |
    | cat14153 |          7 |
    | cat52476 |          7 |
    | cat4556  |          7 |
    | cat64173 |          7 |
    | cat5586  |          7 |
    | cat89302 |          6 |
    | cat97131 |          6 |
    | cat42010 |          6 |
    +----------+------------+

目标是展示所有人气最高的猫。像这样的东西。

+----------+------------+
| name     | popularity |
+----------+------------+
| cat22610 |          7 |
| cat68704 |          7 |
| cat14153 |          7 |
| cat52476 |          7 |
| cat4556  |          7 |
| cat64173 |          7 |
| cat5586  |          7 |
+----------+------------+

帮助会很棒。提前致谢。

【问题讨论】:

    标签: mysql sql count popularity


    【解决方案1】:

    我想这个查询会对你有所帮助!

    SELECT NAME, COUNT(*) AS POPULARITY 
    FROM CATTWO 
    GROUP BY NAME 
    HAVING COUNT(*) = 
            (
                SELECT COUNT(*) AS MAX_POPULARITY 
                FROM CATTWO 
                GROUP BY NAME
                ORDER BY MAX_POPULARITY DESC
                LIMIT 1
            );
    

    【讨论】:

      【解决方案2】:
      SELECT name, COUNT(*) AS popularity 
      FROM cattwo 
      GROUP BY name 
      HAVING COUNT(*) = 
              (
                  SELECT COUNT(*) AS popularity 
                  FROM cattwo 
                  GROUP BY name
                  ORDER BY popularity DESC
                  LIMIT 1
              )
      LIMIT 10;
      

      【讨论】:

        【解决方案3】:
        select C1.name,COUNT(*) AS  popularity FROM cattwo C1 GROUP BY C1.name
        
        HAVING 0=(SELECT COUNT(*) popularity  FROM  cattwo 
        C2 GROUP BY C2.NAME HAVING C1.popularity <C2.popularity )
        

        【讨论】:

          猜你喜欢
          • 2012-08-27
          • 1970-01-01
          • 1970-01-01
          • 2017-02-25
          • 1970-01-01
          • 2020-03-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多