多くの列にNULL値がある場合、時間の経過に伴う累積合計をどのように計算するのですか?MySQL:NULLs行の累積合計の計算
ノー特定のエラーメッセージと外に次のことをしよう、と私のクエリ時間午前:
SELECT t1.time_purchased,
t1.savings AS daily_savings,
SUM(t2.savings) AS total_savings
FROM items AS t1,
items AS t2
WHERE t1.time_purchased >= t2.time_purchased
GROUP BY t1.time_purchased;
time_purchasedと貯蓄の行は、多くの場合、空です - このエラーの原因となっていますか?もしそうなら、私はこれらのエラーをスキップして、total_savingsに貯蓄を追加することができますか?
理想的には、time_purchasedとは関係なく、時間の経過と共に累積的な節約額を表示したいと考えています。ありがとう!
ソリューションEDIT:そこに助けをみんなに
感謝。最終的な解決策では、私のFROMステートメントで、節約にヌル値がないテーブルを選択する必要がありました。そうでない場合は、NULL値を追加していたためcumulative_sumが引き続きNULLになりました。 MySQLでは
SET @cumulative_sum := 0;
SELECT
time_purchased
,savings
,(@cumulative_sum := @cumulative_sum + savings) AS cumulative_sum
FROM (SELECT * FROM items WHERE savings IS NOT NULL) AS i
ORDER BY time_purchased;
これはnull値とは関係ありません。問題は、クロス積が非常に大きいことです。 – Barmar
この表にはすべての顧客に貯蓄がありますか?あなたは顧客別にグループ化していないので、これはすべての顧客とすべての日付に対して行を持ち、*すべての*他の顧客の累積合計を表示します。 – Barmar
それはすべての顧客のための節約を持っていません - どのようにグループ化することをお勧めしますか? – avtomate