SQLite:如何在 SELECT 语句中将 WHERE 子句隔离到只有一个数据集?



我有一个数据库,其中包含客户的日期条目,客户类型。有些购买,有些不购买。

表如下所示:

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;