我有一个数据库,其中包含客户的日期条目,客户类型。有些购买,有些不购买。
表如下所示:
DATE|sessionID|customer_type|purchase value|
我正在尝试创建一个表来计算客户总数、购买客户总数,并按客户类型和日期(每周(对其进行排序。
法典
CREATE TABLE KPIs (
'week' integer,
'customer_type' integer,
'customer_traffic' integer,
'customer_that_purchased' integer
);
INSERT INTO KPIs (
week,
customer_type,
customer_traffic,
customer_that_purchased)
SELECT
week,
customer_type_var,
count(session_id),
count(purchase_value)
FROM data
WHERE purchase_value <> 0
GROUP BY week, traffic_type_var ;
当我这样做时,问题是 WHERE 子句适用于计算客户总数和购买的客户,这显然是不正确的(它应该仅适用于计算已购买的客户(。
如何选择多个数据集,并使 WHERE 子句仅适用于某些数据集而不适用于其他数据集?
通过将前一个WHERE
子句移动到sum
表达式中来考虑条件聚合:
INSERT INTO KPIs (week, customer_type, customer_traffic, customer_that_purchased)
SELECT week, customer_type_var,
count(session_id),
sum(purchase_value <> 0)
FROM data
GROUP BY week, customer_type_var;