Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Statistik mit Tcl und Mysql

Was Sie hier brauchen, ist eine etwas aufwändigere SQL-Abfrage. Es wird aus Unterabfragen bestehen.

Die erste ist diese (fiddle ). ). Sie erhalten die Gesamtzahl der Tür-offenen-Elemente für jeden Namen.

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

Das nächste ist das (fiddle ). ). Sie erhalten die Anzahl der Öffnungen pro Tür und Name.

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

Die dritte (fiddle ) integriert die zweite und gibt Ihnen eine Zeile für jeden Namen, die zeigt, dass sich die Tür öffnet.

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

Schließlich benötigen Sie einen JOIN in dieser Form, um diese Unterabfragen miteinander zu verbinden.

   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

Ausgeschrieben sieht es so aus (fiddle ). Sie fügen es in Ihr sql ein variabel und schon kann es losgehen. Es ist nur ein mehrzeiliger String.

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}

Es gibt also eine Abfrage, die aus einer Reihe verschachtelter Abfragen besteht.

Hier sind einige Tricks, die Sie lernen können, wenn Sie in der SQL-Datenanalyse besser werden.

  1. Verwendung von GROUP BY
  2. Verschachtelung von Abfragen, auch Unterabfragen genannt. Sie können sich Unterabfragen als virtuelle Tabellen vorstellen.
  3. (erweitert) GROUP_CONCAT .