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

Permintaan SQL untuk mendapatkan subtotal dari beberapa baris

Anda dapat menggabungkan menggunakan CASE ekspresi, yang membentuk grup menggunakan id jika manager_id menjadi nol, jika tidak menggunakan manager_id . Logika lainnya mirip dengan yang sudah Anda miliki.

SELECT
    CASE WHEN manager_id = 0 THEN id ELSE manager_id END AS manager_id,
    MAX(CASE WHEN is_manager=1 THEN name END) AS name,
    SUM(no_of_items) AS total_items,
    SUM(revenue) AS total_revenue
FROM items_revenue
GROUP BY
    CASE WHEN manager_id = 0 THEN id ELSE manager_id END;

Demo

Satu catatan tambahan:Saya menggunakan fungsi di GROUP BY klausa, yang tidak sesuai dengan ANSI dan karena itu mungkin tidak berjalan di mana-mana. Untuk memperbaikinya, pertama-tama kami dapat membuat subkueri tabel Anda untuk menghasilkan grup pengelola yang efektif. Kemudian, gunakan jawaban saya di atas terhadap hasil antara ini.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SET variabel yang ditentukan pengguna di mysql mengembalikan nol?

  2. Prosedur tersimpan dengan Alembic:Kesalahan Sintaks MySQL

  3. Cara menyisipkan array ke dalam satu pernyataan MySQL Disiapkan dengan PHP dan PDO

  4. Formulir PHP tidak dimasukkan ke dalam database mySQL

  5. Bagaimana cara menggabungkan dua baris dan menghitung perbedaan waktu antara dua nilai cap waktu di MySQL?