gpt4 book ai didi

sql - 如何组合 SELECT 语句来计算 SQL Server 中的百分比、成功和失败?

转载 作者:行者123 更新时间:2023-12-03 02:48:41 25 4
gpt4 key购买 nike

想象一张 table :

CUST_PROMO (customer_id,PROMOTION),用作客户收到的每个促销之间的映射。

select promotion, count(customer_id) as promo_size
from CUST_PROMO
group by promotion

这为我们提供了每次促销事件中的客户总数。

现在,我们有了 CUSTOMER (customer_id, PROMO_RESPONDED,PROMO_PURCHASED),其中列出了客户以及哪些促销事件让客户做出了响应,哪些促销事件让他们进行了购买。

select PROMO_RESPONDED, count(customer_id) as promo_responded 
from CUSTOMER
group by PROMO_RESPONDED

select PROMO_PURCHASED,count(customer_id) as promo_responded
from CUSTOMER
group by PROMO_PURCHASED

这一切都是不言自明的;现在我已经了解了每个促销事件获得成功的人数。

但是;我最终想要的是[CSV 形式]

PROMOTION,PROMO_SIZE,PROMO_RESPONDED,PROMO_PURCHASED,PROMO_RESPSUCCESSRATE,blah

1,100,12,5,12%,...
2,200,23,14,11.5%,...

我不知道该怎么做。我可以合并上面的三个查询;但这实际上并没有达到我想要的结果。我考虑过创建一个内存表,插入每个促销值,然后执行一个带有连接的更新语句来设置每个值 - 但这非常困惑;并需要为每个表/选择语句一个新的 UPDATE 语句。我还可以为每个结果集创建一个临时表,然后将它们连接在一起;但真的;谁想这么做?

我想不出任何有意义的方式来连接这些数据;因为我正在处理聚合。

因此,我最多需要一个像 UNION 一样组合结果集的函数,但实际上会组合键上的类似列并添加这些列,而不是添加行的 union。从描述来看,它听起来像是一个 JOIN;但我看不到那行得通。

感谢您的帮助!

最佳答案

SELECT
cp.promotion,
PROMO_SIZE = COUNT(*),
PROMO_RESPONDED = COUNT(c1.customer_id),
PROMO_PURCHASED = COUNT(c2.customer_id),
PROMO_RESPSUCCESSRATE = COUNT(c1.customer_id) * 100.0 / COUNT(*)
FROM CUST_PROMO cp
LEFT JOIN CUSTOMER c1
ON cp.customer_id = c1.customer_id AND cp.promotion = c1.PROMO_RESPONDED
LEFT JOIN CUSTOMER c2
ON cp.customer_id = c2.customer_id AND cp.promotion = c2.PROMO_PURCHASED
GROUP BY cp.promotion

关于sql - 如何组合 SELECT 语句来计算 SQL Server 中的百分比、成功和失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6234017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com