[英]How to join multiple tables in Athena?
我有两个要加入的查询。 第一个查询为我提供了每天和商店组的p_sales
和p_views
,如下所示。 它只显示所有商店组,但 M、N、O 商店组在这些表中没有p_sales
。
SELECT date,
CASE
WHEN shop_group = 'MM' THEN
'M'
WHEN shop_group = 'NN' THEN
'N'
WHEN shop_group = 'OO' THEN
'O'
WHEN shop_group = 'RR' THEN
'R'
END AS shop_group,
sum(p_sales) as p_sales,
sum(p_views) as p_views
FROM Z
GROUP BY 1, 2
因此,第二个查询将通过以下查询为 M、N、O 商店组提供“p_sales”。
with sales as (
SELECT
book_id,
SUM(COALESCE(sales, estimated_sales)) AS p_sales
FROM X
WHERE DATE(date) >= CURRENT_DATE - INTERVAL '10' DAY
GROUP BY book_id
HAVING SUM(COALESCE(sales, estimated_sales)) >= 0
)
SELECT
date,
CASE
WHEN shop_id = 1 THEN
'M'
WHEN shop_id = 2 THEN
'N'
WHEN shop_id = 3 THEN
'O'
END AS shop_group,
cast(shop_id as varchar) shop_id,
SUM(p_sales) p_sales
FROM Y
JOIN sales
ON Y.book_id = sales.book_id
WHERE date(date) = current_date - interval '10' day
AND shop_id in (1, 2, 3)
GROUP BY 1, 2, 3
如何将第二个查询添加到第一个查询中? 我想将第二个查询添加到第一个查询中,因为第一个查询包含所有商店组的p_views
,以及除 M、N、O 商店组之外的所有商店的p_values
。 但是第二个查询只包含三个商店组(M、N、O)的p_sales
。 这就是为什么第二个查询应该是第一个查询的子查询,这样我就可以看到所有商店组的所有值。
所需的 output 将包含所有商店组的p_views
和p_sales
。
在下面找到像 CTE 下的两个查询
with firstQuery as
(SELECT date,
CASE
WHEN shop_group = 'MM' THEN
'M'
WHEN shop_group = 'NN' THEN
'N'
WHEN shop_group = 'OO' THEN
'O'
WHEN shop_group = 'RR' THEN
'R'
END AS shop_group,
sum(p_sales) as p_sales,
sum(p_views) as p_views
FROM Z
GROUP BY 1, 2
),
sales as (
SELECT
book_id,
SUM(COALESCE(sales, estimated_sales)) AS p_sales
FROM X
WHERE DATE(date) >= CURRENT_DATE - INTERVAL '10' DAY
GROUP BY book_id
HAVING SUM(COALESCE(sales, estimated_sales)) >= 0
)
SELECT
date,
CASE
WHEN shop_id = 1 THEN
'M'
WHEN shop_id = 2 THEN
'N'
WHEN shop_id = 3 THEN
'O'
END AS shop_group,
cast(shop_id as varchar) shop_id,
SUM(p_sales) p_sales
FROM Y
JOIN sales
ON Y.book_id = sales.book_id
WHERE date(date) = current_date - interval '10' day
AND shop_id in (1, 2, 3)
GROUP BY 1, 2, 3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.