我有一个问题陈述:10月订购的客户中有哪部分也在9月订购了?
澄清计算应该是这样的。
分子:10月和9月订购的客户数量
分母:10月份订购的客户数量
我已经写了这个查询,但是这给了我1作为答案是错误的。(t1应该是2 customer_id而t2应该是10 customer_id,所以答案应该是 0.2 )
我无法弄清楚哪个部分给我错误。
select count(t1.customer_id)/count(t2.customer_id)*1.0
from ((SELECT *
FROM shipping
WHERE SUBSTR(transaction_date, 1, 2) IN ('09', '10')
GROUP BY customer_id
HAVING COUNT(DISTINCT SUBSTR(transaction_date, 1, 2)) = 2) AS t1,
(SELECT *
FROM shipping
WHERE SUBSTR(transaction_date, 1, 2) IN ('10')
GROUP BY customer_id) AS t2) ;
答案 0 :(得分:0)
要进行浮点除法,两个值中的至少一个必须已经是浮点值。最后*1.0
进行分割后的转换;你必须早点做到:
select count(t1.customer_id)*1.0/count(t2.customer_id)
...
答案 1 :(得分:0)
为时已晚,但由于我不敢相信尚未回答,我将发布答案:
requests.get("https://example.com/")
print(time() - t) # 0.604 s
第一个子查询使用SELECT 1.0 *
(
SELECT COUNT() OVER()
FROM shipping
WHERE SUBSTR(transaction_date, 1, 2) IN ('09', '10')
GROUP BY customer_id
HAVING COUNT(DISTINCT SUBSTR(transaction_date, 1, 2)) = 2
) /
(
SELECT COUNT(DISTINCT customer_id)
FROM shipping
WHERE SUBSTR(transaction_date, 1, 2) = ('10')
) percentage
窗口函数计算在10月和9月都订购的不同客户的数量,第二个子查询计算在10月订购的客户的数量。
参见简化的demo。