Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Statistik Dengan Tcl Dan Mysql

Yang Anda butuhkan di sini adalah kueri SQL yang sedikit rumit. Ini akan terdiri dari subkueri.

Yang pertama adalah ini (biola ). Ini memberi Anda jumlah total item pembuka pintu untuk setiap nama.

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

Yang berikutnya adalah ini (biola ). Ini memberi Anda jumlah bukaan per pintu dan nama.

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

Yang ketiga (biola ) menggabungkan yang kedua, dan memberi Anda satu baris untuk setiap nama, menunjukkan pintu terbuka.

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

Terakhir, Anda memerlukan JOIN untuk mengikat subkueri tersebut bersama-sama, dari formulir ini.

   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

Semua dijabarkan terlihat seperti ini (biola ). Anda memasukkannya ke dalam sql variabel dan Anda siap melakukannya. Ini hanya string multiline.

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}

Jadi ada kueri yang dibuat dari sekumpulan kueri bersarang.

Ada beberapa trik di sini untuk Anda pelajari saat Anda menjadi lebih baik dalam analisis data SQL.

  1. penggunaan GROUP BY
  2. pengumpulan kueri, juga dikenal sebagai subkueri. Anda dapat menganggap subkueri sebagai tabel virtual.
  3. (lanjutan) 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. IMAP &PHP - Mengambil semua email dari folder terkirim dan kotak masuk

  2. Gunakan arahan IN untuk mencari dengan pernyataan yang sudah disiapkan

  3. c3p0 maxIdleTime sama dengan wait_timeout dari mysql?

  4. Lewati variabel MySQL ke skrip dari baris perintah

  5. PHP &MySQL Termasuk tombol Hapus di halaman yang sama