sql >> Databáze >  >> RDS >> Mysql

Statistiky s Tcl a Mysql

Zde potřebujete mírně propracovaný SQL dotaz. Bude sestávat z dílčích dotazů.

První je toto (fiddle ). Získáte celkový počet položek otevřených dveří pro každé jméno.

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

Další je toto (fiddle ). Získáte počet otevření na dveře a jméno.

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

Třetí (fiddle ) zahrnuje druhý a pro každé jméno vám poskytne jeden řádek, který ukazuje otevření dveří.

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

Nakonec potřebujete JOIN ke spojení těchto dílčích dotazů v tomto formuláři.

   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

Všechno to vypadá takto (fiddle ). Vložíte to do svého sql variabilní a můžete jít. Je to jen víceřádkový řetězec.

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}

Existuje tedy dotaz vytvořený z hromady vnořených dotazů.

Zde je několik triků, které se můžete naučit, až se budete zlepšovat v analýze dat SQL.

  1. použití GROUP BY
  2. vnoření dotazů, známé také jako poddotazy. Poddotazy si můžete představit jako virtuální tabulky.
  3. (pokročilé) GROUP_CONCAT .



  1. Jak nakonfigurovat replikaci zdroj-replika v MySQL

  2. Proč používat frameworky? Přesvědčte mě, že bych měl přijít na Zend Framework a používat jej

  3. Dokončete kurz Laravel 8 Soft Delete &Restore Deleted Records

  4. Souhrnné sloupce s dalšími (odlišnými) filtry