私のデータはAmazon Redshiftデータベースに保存されています。私は月ごとにランニングカウントを取得しようとしています。これは私のクエリです:実行回数は、合計値の代わりにすべての値を表示します
SELECT
TO_CHAR(LD.INITIAL_PURCHASE_DATE,'YYYY-MM') AS INITIAL_PURCHASE,
COUNT(LD.LOAN_ID) OVER (ORDER BY TO_CHAR(LD.INITIAL_PURCHASE_DATE,'YYYY-MM') ROWS UNBOUNDED PRECEDING) AS TOTAL_LOANS
FROM LOANS_DETAILS
INNER JOIN LOANS L ON LD.LOAN_ID = L.ID
WHERE L.UNDERWRITING_STATUS IN ('...')
AND LD.INITIAL_PURCHASE_DATE IS NOT NULL
GROUP BY
LD.LOAN_ID,
LD.INITIAL_PURCHASE_DATE;
私の予想結果は以下の通りである:
INITIAL_PURCHASE|TOTAL_LOANS
...|...
2016-10|369
2016-11|424
しかし、その代わりに、私はそう
INITIAL_PURCHASE|TOTAL_LOANS
...|...
2016-10|366
2016-10|367
2016-10|368
2016-10|369
2016-11|371
のような月の毎日のための1つのレコードを取得私がチェック10月には合計369件、11月には424件が確定したので、データが正しいことを知っています。
1か月あたりのローン総数はどのようにして得られますか?
解決 これは正しいクエリです。
SELECT
TO_CHAR(LD.INITIAL_PURCHASE_DATE,'YYYY-MM') AS INITIAL_PURCHASE_DATE,
SUM(COUNT(LD_LOANS.LOAN_ID)) OVER (ORDER BY TO_CHAR(LD.INITIAL_PURCHASE_DATE,'YYYY-MM') ROWS UNBOUNDED PRECEDING) AS TOTAL_LOANS
FROM LOANS_DETAIL LD
INNER JOIN LOANS L ON LD.LOAN_ID = L.ID
WHERE L.UNDERWRITING_STATUS IN ('...') AND LD.INITIAL_PURCHASE_DATE IS NOT NULL
GROUP BY TO_CHAR(LD.INITIAL_PURCHASE_DATE,'YYYY-MM')
私はすでに試してみました。 AS TOTAL_LOANS'は '[Amazon](500310)を返します。無効な操作:集約関数の呼び出しには、次のようなものがあります。 'SUM(COUNT(LUT_LOANS.LOAN_ID)OVER(LUT_LOANS.INITIAL_PURCHASE_DATE、' YYYY-MM ')行のUNBOUNDED PRECEDING)ネストされた集計またはウィンドウ関数; – Alan
@Alan。 。 。注意深く見てみると、この答えは集計関数の境界を定めるウィンドウ関数を使用していることになります。 –
申し訳ありません。私の間違いを実感しました。 'sum(COUNT(*))'が働いた。ありがとうございました。 – Alan