假设我们有两个表,我们的表给出用户在电子商务网站上购买/查看的信息。
表purchases
的格式如下:
<表类>
国家
itemid
设备
num_purchases
天
tbody><<tr>美国 ABC iPhone11 2 2022-06-15 美国ABC iPhoneX 5 2022-06-15 美国DEF iPhoneX 8 2022-06-15 英国ABC iPhone11 10 2022-06-15 英国DEF iPhoneX 20 2022-06-15 表类>
如果我理解正确的话,
您可以在加入total_per_country_per_day之前计算它:
SELECT P.COUNTRY, P.ITEMID, P.DEVICE,P.NUM_PURCHASES, V1.TOTAL_PER_COUNTRY_DAY,P.DAY
FROM PURCHASES P
LEFT JOIN (
SELECT V.COUNTRY,SUM(V.TOTAL_VIEWS) AS TOTAL_PER_COUNTRY_DAY,V.DAY
FROM VIEWS V
GROUP BY V.COUNTRY, V.DAY
) AS V1 ON P.COUNTRY = V1.COUNTRY AND P.DAY = V1.DAY
它应该返回:
country itemid device num_purchases TOTAL_PER_COUNTRY_DAY DAY
USA ABC iPhone11 2 900 2022-06-15
USA ABC iPhoneX 5 900 2022-06-15
USA DEF iPhoneX 8 900 2022-06-15
UK ABC iPhone11 10 350 2022-06-15
UK DEF iPhone11 20 350 2022-06-15
然后汇总每个国家/地区每天的购买量:
SELECT A.COUNTRY
,CAST(SUM(A.NUM_PURCHASES) AS FLOAT)/A.TOTAL_PER_COUNTRY_DAY AS num_purchases_per_view
, A.TOTAL_PER_COUNTRY_DAY,DAY
FROM
(
SELECT P.COUNTRY, P.ITEMID, P.DEVICE,P.NUM_PURCHASES,V1.TOTAL_PER_COUNTRY_DAY,P.DAY
FROM PURCHASES P
LEFT JOIN (
SELECT V.COUNTRY,SUM(V.TOTAL_VIEWS) AS TOTAL_PER_COUNTRY_DAY,V.DAY
FROM VIEWS V
GROUP BY V.COUNTRY, V.DAY
) V1 ON P.COUNTRY = V1.COUNTRY AND P.DAY = V1.DAY
) A
GROUP BY A.COUNTRY,A.TOTAL_PER_COUNTRY_DAY,DAY
在进行除法操作时要注意数据类型,可能需要对其进行强制类型转换。
这是测试样本:
,DB<的在小提琴