繁体   English   中英

如何在 Athena 中连接多个表?

[英]How to join multiple tables in Athena?

我有两个要加入的查询。 第一个查询为我提供了每天和商店组的p_salesp_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_viewsp_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM