从 2 个表获取订阅数和取消订阅数的 SQL 错误

问题描述 投票:0回答:1

我在订阅和取消订阅函数和变量名称中遇到此 Presto SQL 代码错误:

SELECT
    emailaddress,
    firstname,
    lastnamename,
    role,
    status,
    optindate,
    optinsource,
    optoutdate,
    optoutreason,
    SUM(subscribes) AS total_subscribes,
    SUM(unsubscribes) AS total_unsubscribes
FROM  
    (SELECT
         emailaddress,
         firstname,
         lastnamename,
         role,
         status,
         optindate,
         optinsource,
         optoutdate,
         optoutreason,
         1 as subscribes
     FROM 
         table_subscribes
     UNION ALL
     SELECT
         emailaddress,
         firstname,
         lastnamename,
         role,
         status,
         optindate,
         optinsource,
         optoutdate,
         optoutreason,
         1 AS unsubscribes
     FROM 
         table_unsubscribes) all
GROUP BY
    emailaddress, firstname, lastnamename,
    role, status, optindate, optinsource,
    optoutdate, optoutreason,

我想获得每个表的总订阅数和总取消订阅数的总和,并按其他属性将其分组到结果表中

sql validation data-manipulation presto sql-function
1个回答
0
投票

UNION
只会保留第一个查询的列名称,其余的都会丢失,因此将所有列添加到
UNION
的两个查询中,一切都会好起来的

SELECT
  emailaddress,
  firstname,
  lastnamename,
  role,
  status,
  optindate,
  optinsource,
  optoutdate,
  optoutreason,
 SUM(subscribes) as total_subscribes,
 SUM(unsubscribes) as total_unsubscribes
FROM(
      SELECT
       emailaddress,
       firstname,
       lastnamename,
       role,
       status,
       optindate,
       optinsource,
       optoutdate,
       optoutreason,
       1 as subscribes,
       0 as unsubscribes
      FROM table_subscribes
     UNION ALL
     SELECT
       emailaddress,
       firstname,
       lastnamename,
       role,
       status,
       optindate,
       optinsource,
       optoutdate,
       optoutreason,
       0 as subscribes,
       1 as unsubscribes
      FROM table_unsubscribes
)all
GROUP BY
emailaddress,
  firstname,
  lastnamename,
  role,
  status,
  optindate,
  optinsource,
  optoutdate,
  optoutreason
© www.soinside.com 2019 - 2024. All rights reserved.