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

サブクエリ内でgroupbyを使用する

    期待される結果セットに対して以下のクエリを使用できます

    SELECT *,
    COALESCE(
        (SELECT SUM(pt.rupees) FROM (
            SELECT  MONTH(`date`) `month`,
            MAX(id) id,
            SUM(rupees) rupees
            FROM house_details 
            GROUP BY `month`,subincome
        ) pt 
        WHERE CASE WHEN pt.month = t1.month THEN pt.id < t1.id ELSE pt.month < t1.month END 
    ), 0) AS progressive_total,
    (SELECT SUM(rupees) FROM(
            SELECT  MONTH(`date`) `month`,
            MAX(id) id,
            SUM(rupees) rupees
            FROM house_details 
            GROUP BY `month`,subincome
        ) cs 
        WHERE  CASE WHEN cs.month = t1.month THEN cs.id <= t1.id ELSE cs.month <= t1.month END 
    ) AS cumulative_sum 
    FROM (
        SELECT MONTHNAME(t.date) AS `monthname`,
        MAX(id) id,
        MONTH(t.date) `month`,
        YEAR(t.date) AS `year`,
        GROUP_CONCAT(t.income) income,
        t.subincome,
        GROUP_CONCAT(t.ssubincome) ssubincome,
        SUM(rupees) AS amount,
        GROUP_CONCAT(receipt_id) AS receipt_ids 
        FROM house_details t 
        WHERE YEAR(t.date) = YEAR(CURRENT_DATE()) 
        GROUP BY `monthname`,`month`, t.subincome
        ORDER BY `month`
    ) t1
    

    デモ



    1. 入力ファイルタイプを使用して画像を編集する

    2. UTF-8がHTMLフォームで機能しない

    3. Mysqlはcsv文字列のwhereフィールドを選択します

    4. 300GBのPostgisテーブルのインデックス作成が遅い