1
PostgreSQLクエリでRFM解析を作成しようとしています。しかし、私はRecencyディメンションのクエリを完全に完了していません。この記事 リーセンシー次元の「https://cooldata.wordpress.com/2014/03/25/an-all-sql-way-to-automate-rfm-scoring/」
基準に触発 問合せは、2ヶ月以内にPostgresqlを使用したRFM解析
- ラストオーダーだった= 5 4ヶ月= 4
- ラストオーダー6内の内
- ラストオーダーヶ月= 3 8ヶ月以内
- ラストオーダー= 2 10ヶ月以内
- 最終順序= 1
とは私が終えるしようとしてきたクエリです
WITH rfm AS
(SELECT email,
SUM((total_incl_tax)) AS cash,
MAX(decode(order_order.order_date, 2016-01-01, 5, 2016-02-01, 4, 2016-03-01, 3, 2016-04-01, 2, 201605-01, 1)) AS recency,
COUNT(DISTINCT(order_date)) AS frequency
FROM order_order
GROUP BY email)
SELECT rfm.email,
CASE
WHEN rfm.cash >= 2000000 THEN 5
WHEN rfm.cash > 1500000 THEN 4
WHEN rfm.cash > 1000000 THEN 3
WHEN rfm.cash > 500000 THEN 2
WHEN rfm.frequency > 4 THEN 5
WHEN rfm.frequency = 4 THEN 4
WHEN rfm.frequency = 3 THEN 3
WHEN rfm.frequency = 2 THEN 2
WHEN rfm.frequency = 1 THEN 1
else 1
END + rfm.frequency AS rfm_score
--+ Five_years.recency
FROM rfm
GROUP BY rfm.email, rfm.cash,rfm.frequency
ORDER BY rfm.email
エラーだった:
ERROR: function decode(timestamp with time zone, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer) does not exist Hint: No function matches the given name and argument types. You might need to add explicit type casts. Position: 186
と私はエラーが
MAX(decode(order_order.order_date, 2016-01-01, 5, 2016-02-01, 4, 2016-03-01, 3, 2016-04-01, 2, 2016-05-01, 1)) AS recency
があります。このラインにあったと仮定リーセンシーディメンションに記載されている基準にエラーラインを変更する際の提案はありますか?ありがとう
ここで、[Postgresのマニュアルで](https://www.postgresql.org/docs/current/static/functions。 html) 'decode()'関数を見つけましたか? –