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

Statystyki z Tcl i Mysql

Potrzebujesz tutaj nieco rozbudowanego zapytania SQL. Będzie się składał z podzapytań.

Pierwszy z nich to (fiddle ). Daje Ci całkowitą liczbę przedmiotów do otwarcia drzwi dla każdego nazwiska.

 SELECT COUNT(*) total, name FROM stats GROUP BY name

Następny jest ten (fiddle ). Daje Ci liczbę otwarć na drzwi i nazwę.

SELECT COUNT(*) bydoor, name, door FROM stats GROUP BY name, door

Trzeci (skrzypce ) zawiera drugi i otrzymuje jedną linię dla każdego nazwiska, pokazując, jak otwierają się drzwi.

SELECT name, 
       GROUP_CONCAT(CONCAT(bydoor,'X',' door ', door) ORDER BY bydoor DESC) details
  FROM (   SELECT COUNT(*) bydoor,
                  name,
                  door
             FROM stats
            GROUP BY name, door
        ) s
  GROUP BY name

Na koniec potrzebujesz JOIN, aby powiązać te podzapytania w tej formie.

   SELECT t.name, t.total, d.details
     FROM ( .... the first subquery ....) t
     JOIN ( .... the second subquery .... ) d ON t.name = d.name
    ORDER BY t.total DESC, t.name

Wszystko napisane, wygląda tak (fiddle ). Umieszczasz go w swoim sql zmienna i możesz iść. To tylko wielowierszowy ciąg.

set sql {SELECT t.name, t.total, d.details
  FROM (SELECT COUNT(*) total, name FROM stats GROUP BY name) t
  JOIN (  SELECT name, 
                 GROUP_CONCAT(CONCAT(bydoor,'X',' door ', door) ORDER BY bydoor DESC) details
            FROM (   SELECT COUNT(*) bydoor,
                            name,
                            door
                       FROM stats
                      GROUP BY name, door
                 ) s
           GROUP BY name
        ) d ON t.name = d.name
  ORDER BY t.total DESC, t.name}

Więc jest zapytanie złożone z wielu zagnieżdżonych zapytań.

Jest tu kilka sztuczek, których możesz się nauczyć, gdy staniesz się lepszy w analizie danych SQL.

  1. użycie GROUP BY
  2. zagnieżdżanie zapytań, zwane też podzapytaniami. Możesz myśleć o podzapytaniach jak o wirtualnych tabelach.
  3. (zaawansowane) GROUP_CONCAT .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak umieścić jedną kolumnę wyników mysql_query w tablicy?

  2. Uzyskaj identyfikator wstawionego wiersza za pomocą C#

  3. Dane znakowe nie są przekazywane z php do jquery

  4. Czy możliwa jest modyfikacja wpisów w tabeli z LibreOffice Base?

  5. Podział w zapytaniu MySQL