在PostgreSQL中获取复杂的交叉销售详细信息
我有一个问题,我需要了解交叉销售产品的收入详情。 例如,我想知道客户购买的与所选类别的所有类别组合,以及该客户在所选类别以外的其他类别上花费的金额 下面是一个示例查询,它将为我提供组合和收入,使用筛选子句,如果组合计数为2个类别,我可以获得包含和不包含所选类别的类别的收入,但是当组合中有2个以上类别时,我需要获得每个类别的成本信息,我如何获得它 数据库:PostgreSQL版本11在PostgreSQL中获取复杂的交叉销售详细信息,postgresql,Postgresql,我有一个问题,我需要了解交叉销售产品的收入详情。 例如,我想知道客户购买的与所选类别的所有类别组合,以及该客户在所选类别以外的其他类别上花费的金额 下面是一个示例查询,它将为我提供组合和收入,使用筛选子句,如果组合计数为2个类别,我可以获得包含和不包含所选类别的类别的收入,但是当组合中有2个以上类别时,我需要获得每个类别的成本信息,我如何获得它 数据库:PostgreSQL版本11 WITH filter_2 as ( SELECT DISTINCT
WITH filter_2 as
(
SELECT DISTINCT
o.order_number
, o.client_email
, COALESCE(category,'') AS category_name
, SUM(revenue) as revenue
FROM
orders o
INNER JOIN distinct_orders dos on dos.client_email=o.client_email
LEFT JOIN items i ON i.order_id = o.order_id
LEFT JOIN products p ON p.product_id = i.product_id
WHERE o.state ='Done'
GROUP BY o.order_number
, o.client_email, COALESCE(category,'')
)
,result_set_1 as
(
SELECT
f.order_number
,f.client_email
,string_agg(DISTINCT COALESCE(category,''), ' , ' ORDER BY COALESCE(category,'')) as cat_level_3_name
,COUNT(DISTINCT category) as prod_count
,SUM(revenue) revenue
FROM filter_2 f
GROUP BY f.order_number,f.client_email
)
SELECT
COUNT(DISTINCT order_number) as order_count,
COUNT(DISTINCT client_email) as customer_count
,category
,SUM(revenue) as revenue
FROM result_set_1 r
WHERE category IS NOT NULL
GROUP BY category
ORDER BY order_count DESC
样本输入
Order_number client_email category Revenue
"819214" "olx@gmail.com" "A Tea" 290.00
"819214" "olx@gamil.com" "B Tea" 10.00
"608759" "lixxx@gmail.com" "A Tea" 15.00
"608759" "lixxx@yahoo.com" "B Tea" 20.00
"608759" "lixxx@gmail.com" "C Tea" 400.00
"237070" "news@gmail.com" "A Tea" 60.0
"237070" "news@gmail.com" "B Tea" 10.0
"508759" "chink@gmail.com" "A Tea" 15.00
"508759" "chink@gmail.com" "B Tea" 25.00
"508759" "chink@gmail.com" "C Tea" 45.00
"578759" "xxxx@gmail.com" "A Tea" 15.00
"588759" "xyyy@gmail.com" "A Tea" 15.00
"598759" "vtyy@gmail.com" "A Tea" 15.00
预期产出
因此,如果我想知道客户购买的所有组合类别以及“一杯茶”
谁能帮我解决这个问题?有什么建议吗?有谁能帮我解决这个问题吗?有什么建议吗?
Combinations Customer count Combination count Revenue Split UP
A Tea 7 3 ( Or 7) A Tee = 45 or (425)
A Tea, B Tea 2 2 A Tea = 350 B Tea = 20
A Tea, B Tea, C Tea 2 2 A Tea= 30 B Tea=45 C Tea = 445