2014-06-18 40 views
0

我將如何去顯示全部 SQL中最常見的值?如何在SQL中查找所有最常用的值?

所以我有查詢以顯示下面最常見的值。

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 | 
+----------+------------+ 

幫助會很好。提前致謝。

回答

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 
     ); 
1
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; 
0
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) 
相關問題