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`
.