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

Urutkan setelah rollup mempertahankan posisi baris total dan subtotal

Berdasarkan versi asli Jawaban Johan :

SELECT *
FROM (
  SELECT 
    COALESCE(country, 'total') AS country,
    COALESCE(region, 'total' ) AS region,
    SUM(`value`) as `value`, 
  FROM `table` 
  GROUP BY country, region WITH ROLLUP
) t
ORDER BY country = 'total', country, region = 'total', `value`

Cara kerja trik ini adalah ekspresi country = 'total' dievaluasi menjadi 1 (benar) jika country kolom sama dengan 'total' , dan ke 0 (salah) jika tidak. Dalam urutan numerik menaik, 1 muncul setelah 0. Jadi, pengurutan menurut ekspresi itu memaksa setiap baris di mana country kolom sama dengan 'total' untuk mengurutkan setelah kolom lainnya.

Demikian pula, mengurutkan berdasarkan ekspresi region = 'total' sebelum value memaksa setiap baris dengan nilai 'total' di region mereka untuk mengurutkan setelah baris lain dengan country yang sama , terlepas dari value mereka kolom.

Trik yang sama bekerja dengan operator perbandingan lainnya juga. Misalnya, jika Anda ingin memaksa nilai negatif untuk mengurutkan setelah nilai positif, Anda dapat mengurutkan baris menurut `value` < 0, `value` .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa menggunakan Variabel Buatan Pengguna MySql di .NET MySqlCommand?

  2. Nilai zona waktu server 'CEST' tidak dikenali

  3. Kapan saya harus menggunakan transaksi dalam kueri saya?

  4. Menautkan wadah Django dan mysql menggunakan docker-compose

  5. Permintaan mysql untuk secara dinamis mengonversi baris ke kolom berdasarkan dua kolom