のために、私は彼らの計画を、サインアップダウングレードおよびアップグレードするユーザーを代表するイベントのデータベースを持って、これまでに合計を実行しています。ユーザーキー、日付キー、プランキーが含まれています。ユーザーの現在のプランを検索するには、ユーザーキーの最新のイベントを検索し、プランキーを使用しても、それに関連付けられたプランを検索します。そして、あなたは、単に各ユーザーのプランの価格を合計MMRを得るためにPostgreSQLは日付ごと
。私はこれを行うために次のSQLを持っています。
SELECT SUM(pl_price)
FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY t.u_id ORDER BY t.d_iso DESC) rn
FROM (
subscription s INNER JOIN user u ON s.s_userkey = u.u_userkey
INNER JOIN plan pl ON s.s_plankey = pl.pl_plankey
INNER JOIN date d on s.s_datekey = d.d_datekey
) t
) t2
WHERE rn = 1
私が今したいことは、毎月の歴史的年齢を調べることです。言い換えれば、それは毎月上記のSQLクエリを実行し、それがオンになっている月以降のすべてのイベントを無視する必要があります。
どうすればいいですか? - 購読
s_subkey|s_userkey|s_plankey|s_datekey
1 |2000 |23 |10
...
ユーザー
u_userkey|u_id|u_name|...|
1 |33 |foo |...|
...
計画
pl_plankey|pl_name|pl_price
1 |aplan |10
...
日
例テーブル:私が試したものは何も...EDIT作業にも、近くではありません
d_datekey|d_date |d_iso |d_yearmonth|...|
1 |10-03-2017|*isodate*|Jun2017 |...|
...
現在のクエリは、現在の月のMMRを得るために働くので、現時点では6月。私はこのようなテーブルを望みます:
monthyear|mmr
Jan17 |1000000
Feb17 |1100000
Mar17 |1200000
... |...
あなたは、テーブルやカラムの意味を説明する必要があります。サンプルデータを与えると役立ちます。 –
@LaurenzAlbe OKおかげで、私が最も内側のクエリで「選択」、そして可能ならば、内側のクエリ(...) – JMoir
を追加ええおかげ上記クエリは現時点では最適ではありませんが、うまくいきます。私はこれらの提案を念頭に置いています!どのように毎月このクエリを適用するかについての任意のアイデア? – verhie