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

Kueri perhitungan agregat pada tabel SQL tunggal

Saya akan mulai dengan menulis kueri yang berfungsi seperti apa satu bagian pembayaran. Yaitu, per payment_id , jumlah dari semua jumlah, dibagi dengan jumlah orang yang harus dibayar. Hasil tersebut kemudian dapat digabungkan kembali ke data aslinya.

SELECT
  payers_payments.payer_id,
  SUM(payers_payments.amount                      )   AS total_paid,
  SUM(payers_payments.pays * payments.single_share)   AS fair_share
FROM
  payers_payments
INNER JOIN
(
  SELECT
    payment_id,
    SUM(amount) / SUM(pays)   AS single_share
  FROM
    payers_payments
  GROUP BY
    payment_id
)
  AS payments
    ON  payers_payments.payment_id = payments.payment_id
GROUP BY
   payers_payments.payer_id

Akan bermanfaat untuk memiliki indeks di kedua (payment_id) dan (payer_id) .

Akan bermanfaat untuk memiliki amount bidang dalam tipe data DECIMAL, meskipun Anda perlu mempertimbangkan apa yang ingin Anda lakukan dengan pembulatan. (Total pembayaran 10,00 perlu dibagi tiga cara, masing-masing 3,33 dan kemudian apa yang Anda inginkan untuk cadangan 0,01?)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hubungan antara katalog, skema, pengguna, dan database instance

  2. Menggunakan ORDER dan GROUP dengan MySQL untuk mendapatkan angka tertinggi untuk setiap GROUP

  3. Masalah komunikasi antara dua kontainer buruh pelabuhan

  4. Bagaimana cara kerja penangguhan transaksi di Musim Semi?

  5. Apakah ada Profiler yang setara untuk MySql?