除以另一个缺少列的表的总数

  • 本文关键字:另一个 sql presto
  • 更新时间 :
  • 英文 :


假设我们有两个表,我们的表给出用户在电子商务网站上购买/查看的信息。

purchases的格式如下:

<表类> 国家 itemid 设备 num_purchases 天 tbody><<tr>美国ABCiPhone1122022-06-15美国ABCiPhoneX52022-06-15美国DEFiPhoneX82022-06-15英国ABCiPhone11102022-06-15英国DEFiPhoneX202022-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&lt的在小提琴

最新更新