国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

「MySQL での Sum(if) グループ化」
P粉026665919
P粉026665919 2023-09-11 13:16:22
0
1
563

次のテーブルがありますが、読み込まれていません: 支払期日、 ユーザーID、 MonthlyAmount_last30d

ユーザー ID と支払い日はテーブルから取得されます。 monthlyAmount_last30d フィールド で、期間 (支払日 - 30 日) の金額を確認(rèn)したいと思います。

これらの列を正しくグループ化してこのような結(jié)果を得る方法がわかりません。 user_id だけでグループ化した場(chǎng)合、支払い日を含む最初の行のみが表示されます (すべての行が必要です。各行にはそのユーザー ID の支払い合計(jì)があり、合計(jì)はその行の日付の支払いです) - 30 日の合計(jì))。 両方のフィールドでグループ化した場(chǎng)合 -> 取得する支払い金額は常にその行の支払い金額と等しく、必要な期間の実際の金額ではありません。

リーリー

ヒントをありがとう!

更新:

データ例:

###ユーザーID### ###支払期日### 12022-01-01 12:00:002022-01-01 13:00:002022-01-03 20:00:002022-01-03 16:00:002022-01-15 11:00:00 ###ユーザーID### ###支払期日###
order_cost_rub
100 1
100 1
150 2
200 2
300 ###予想された結(jié)果: ###
order_cost_rub

monthlyAmount_last30d100
P粉026665919
P粉026665919

全員に返信(1)
P粉138871485

IF() で試していることは間違っていると思います。あなたが求めているものは、

のようなWHERE句に適用されるべきだと思います

過去 30 日以內(nèi)に発生した全員のすべての取引記録が必要です。そこから、各人ごとにグループ化されたすべての購入の合計(jì)が必要になります。そうでしょう?

リーリー

クエリの WHERE 句を適用すると、以前のトランザクション レコードが取得されないため、各レコードに IF() 條件チェックを適用する必要がありません。

クエリを修正しました。したがって、すべてのレコードを表示したいとしますが、過去 30 日間だけを振り返る必要があります。したがって、WHERE 句は引き続き適用されます。ただし、現(xiàn)在はすべての通常のレコードのすべての列を表示しています。 SUM() を見てみましょう。これにより、要求した累積合計(jì)が計(jì)算されます。

その後の OVER 句に注意してください (sum() プロシージャに関連するコンテキストを示すためだけにインデントしています)。 OVER はパーティショニングを指定します (group by に似ていますが、通常の外部 group by ではありません)。これは単に、このパーティション値が変更されたときに再起動(dòng)することを意味します。この場(chǎng)合、それはユーザー ID です。そして、データはパーティション內(nèi)の ORDER BY 命令によってpayment_date 順に並べ替えられます。

これはあなたのニーズを満たすはずだと思います。

最新のダウンロード
詳細(xì)>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
1 2022-01-01 12:00:00 100
1 2022-01-01 13:00:00 100 200
1 2022-01-03 20:00:00 150 350
2 2022-01-03 16:00:00 200 200
2 2022-01-15 11:00:00 300 500

<label id="xnz8r"></label>

<span id="xnz8r"></span>
<span id="xnz8r"></span>
<span id="xnz8r"></span>