Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zwraca listę wszystkich użytkowników sparowanych z ich najpopularniejszym obserwatorem. Im więcej ktoś ma obserwujących, tym bardziej jest popularny

Możesz użyć następującego zapytania:

SELECT person_name, follower_name, cnt
FROM (
   SELECT person_name, follower_name, cnt,
          @rn := IF(@pname = person_name, @rn + 1,
                    IF(@pname := person_name, 1, 1)) AS rn
   FROM (
      SELECT t3.name AS person_name, t4.name AS follower_name, t2.cnt
      FROM followers AS t1
      JOIN (
         SELECT person_id, COUNT(*) AS cnt
         FROM followers
         GROUP BY person_id 
      ) AS t2  ON t1.follower_person_id = t2.person_id
      JOIN person AS t3 ON t1.person_id = t3.id
      JOIN person AS t4 ON t1.follower_person_id = t4.id   
   ) AS x
   CROSS JOIN (SELECT @rn := 0, @pname := '') AS vars
   ORDER BY person_name, cnt DESC) AS v
wHERE v.rn = 1;  

Wyjście:

person_name follower_name   cnt
--------------------------------
John        Rohn            3
Veronica    Rohn            3
Ali         John            2
Rohn        Ali             2

Zapytanie używa zmiennych w celu uzyskania rekordu największego w grupie.

Tutaj prezentacja



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Haszowanie za pomocą crypt w PHP

  2. Magento 1.6:Używanie pól daty i czasu MySQL z modelami zasobów

  3. nodejs mysql multiple gdzie zapytanie jest

  4. Upuść nienazwany klucz obcy w MySql

  5. mysql w xampp uruchamia się i zatrzymuje za pięć sekund