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

Transpos Kueri Besar

Belum ada cara yang bagus untuk melakukan ini di BigQuery, tetapi Anda dapat melakukannya dengan mengikuti ide di bawah ini

Langkah 1

Jalankan kueri di bawah ini

SELECT 'SELECT [group], ' + 
   GROUP_CONCAT_UNQUOTED(
      'SUM(IF([date] = "' + [date] + '", value, NULL)) as [d_' + REPLACE([date], '/', '_') + ']'
   ) 
   + ' FROM YourTable GROUP BY [group] ORDER BY [group]'
FROM (
  SELECT [date] FROM YourTable GROUP BY [date] ORDER BY [date]
)

Hasilnya - Anda akan mendapatkan string seperti di bawah ini (diformat di bawah ini agar mudah dibaca)

SELECT 
    [group], 
    SUM(IF([date] = "date1", value, NULL)) AS [d_date1],
    SUM(IF([date] = "date2", value, NULL)) AS [d_date2] 
FROM YourTable 
GROUP BY [group] 
ORDER BY [group]   

Langkah 2

Jalankan saja kueri yang disusun di atas

Hasilnya akan seperti di bawah ini

group   d_date1 d_date2  
group1  15      30      

Catatan 1 :Langkah 1 sangat membantu jika Anda memiliki banyak grup untuk diputar sehingga terlalu banyak pekerjaan manual. Dalam hal ini - Langkah 1 membantu Anda membuat kueri

Catatan 2 :langkah-langkah ini mudah diterapkan di setiap klien pilihan Anda atau Anda dapat menjalankannya di UI Web BigQuery

Anda dapat melihat lebih banyak tentang pivot di postingan saya yang lain.

Bagaimana cara menskalakan Pivoting di BigQuery?
Harap diperhatikan – ada batasan 10K kolom per tabel - jadi Anda dibatasi dengan 10K organisasi.
Anda juga dapat melihat di bawah ini sebagai contoh yang disederhanakan (jika yang di atas terlalu rumit/verbose):
Bagaimana cara mentranspos baris ke kolom dengan data dalam jumlah besar di BigQuery/SQL?
Bagaimana cara membuat kolom variabel dummy untuk ribuan kategori di Google BigQuery?
Pivot kolom berulang di BigQuery




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. COALESCE di laravel

  2. mysql menghitung baris dengan loop

  3. MySQL #1364 - Kolom 'column_name' tidak memiliki nilai default - Tidak dapat dimasukkan ke dalam DB

  4. Muat data CSV ke MySQL dengan Python

  5. MySql memilih nilai default jika tidak ada hasil?