2016-08-15 23 views
-1

月ごとの収益を計算しようとすると、市場ごとに毎年システムに入力されます。現在のクエリは機能しますが、BIツールのmysqlインスタンス内でタイムアウトします(15分に設定)。私のBIツールではmysql変数を使用できない場合もありますが、そうした場合は条件付きでなければなりません。私は理想的には条件を追加したい。MYSQL合計月合計月額合計

/* Current query with subquery, this works syntactically, but is inefficient*/ 
SELECT 
    d.`Event Date`, 
    d.`market`, 
    (SELECT SUM(s.`Revenue`) 
    FROM time_from_start s 
    WHERE s.`created` <= d.`Event Date` 
    AND s.`Month/Year` = d.`Month/Year` 
    AND s.`market` = d.`market`) as 'Revenue to Date' 
FROM time_from_start d 
GROUP BY d.`Event Date`,d.market 
+1

あなたの質問は私には不明瞭です。要件を明快にするために、サンプル入力と予想される出力を追加してください。 – 1000111

+0

申し訳ありませんが、これは初めてこれを試しています。期待される成果がどういう意味か分かりません。あなたは精緻化できますか?ありがとうございました – Blob

答えて

0

代わりに自己結合を使用して相関サブクエリを使用しないクエリを使用してください。また、

SELECT d1.`Event Date`, d1.market, SUM(d2.Revenue) AS Revenue_to_date 
FROM time_from_start d1 
LEFT JOIN time_from_start d2 
ON d2.market = d1.market 
AND d2.`Month/Year` = d1.`Month/Year` 
AND d2.created <= d1.`Event Date` 
GROUP BY d1.`Event Date`, d1.market 

をクエリで使用される列にインデックスがあることを確認してください:

このクエリは、あなたの元のクエリと同じ結果を与える必要があります。