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

過去3か月のデータを、ユーザーごとに行ではなく個別の列として取得します

    1. LEFT JOINを使用する 念のため、どの月にも請求書がない場合でも、会社の完全なリストを取得できます。
    2. 手動またはスクリプトを使用してn列を作成する必要があります。
    3. 単純な結合を行うだけで、サブクエリは必要ありません。
    4. GROUP BYを使用する 会社ごとに単一のレコードを生成します。
    5. CASE WHENを使用する またはIF ELSE n列を作成し、関連する行からのみデータを選択します。最初の行または任意の行にすることができるため、集計関数を使用して、グループの任意の行にある場合でも、他の行の値をNULLとして作成し、データを選択します。 集計関数はnull値を除外するため。
    SELECT 
        u.display_name,
        SUM(IF( bill_month='Jan2k19', package_price, NULL)) as first_bill,
        SUM(IF( bill_month='Feb2k19', package_price, NULL)) as second_bill,
        SUM(IF( bill_month='Mar2k19', package_price, NULL)) as third_bill
    FROM bf_users u 
    LEFT JOIN bf_monthly_bill b on u.id=b.company_id
    GROUP BY u.display_name;
    
    


    1. 定期的なセンサーデータを使用したデータベースの設計

    2. マネージドホスティングアカウントにphpMyAdminをインストールする方法

    3. utf8_general_ci:どの文字が等しいですか?

    4. 内部にカウントがあるmysqlgroup_concat?