sql >> データベース >  >> RDS >> Mysql

単一のSQLテーブルに対する集計計算クエリ

    私は、支払いの1株が何であるかを機能させるクエリを書くことから始めます。つまり、payment_idごとに 、すべての金額の合計を、支払う必要のある人数で割ったもの。その後、その結果を元のデータに結合することができます。

    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
    

    両方の(payment_id)にインデックスを付けると便利です。 および(payer_id)

    amountがあると便利です DECIMALデータ型のフィールド。ただし、丸めで何をしたいかを考慮する必要があります。 (合計10.00の支払いは、それぞれ3.33の3つの方法に分割する必要があります。次に、予備の0.01に何をしたいですか?)




    1. MicrosoftAzureを使用したMySQLクラウドのバックアップと復元のシナリオ

    2. Oracleにバイトの配列を格納する方法は?

    3. OracleでさまざまなタイプのPL/SQLコレクションを使用する目的

    4. MySQLデータベース内の暗号化されたデータのワイルドカード検索?