SQL Пересечение не поддерживается в Фениксе, альтернатива пересечению в Фениксе? - PullRequest
0 голосов
/ 29 января 2020

У меня есть следующее SQL выражение:

SELECT SS_ITEM_SK AS POP_ITEM_SK 
FROM (SELECT SS_ITEM_SK 
FROM (SELECT SS_ITEM_SK,(ITEM_SOLD-ITEM_RETURNED) AS TOT_SOLD_QTY FROM (SELECT SS_ITEM_SK,COUNT(SS_ITEM_SK) AS ITEM_SOLD,COUNT(SR_ITEM_SK) AS ITEM_RETURNED FROM STORE_SALES1 right outer join STORE_RETURNS1 on SS_TICKET_NUMBER = SR_TICKET_NUMBER AND SS_ITEM_SK = SR_ITEM_SK GROUP BY SS_ITEM_SK)))  

INTERSECT 

SELECT CS_ITEM_SK AS POP_ITEM_SK FROM (SELECT CS_ITEM_SK
FROM (SELECT CS_ITEM_SK,(ITEM_SOLD-ITEM_RETURNED) AS TOT_SOLD_QTY FROM (SELECT CS_ITEM_SK,COUNT(CS_ITEM_SK) AS ITEM_SOLD,COUNT(CR_ITEM_SK) AS ITEM_RETURNED FROM CATALOG_SALES1 right outer join CATALOG_RETURNS1 on CS_ORDER_NUMBER = CR_ORDER_NUMBER and CS_ITEM_SK = CR_ITEM_SK  GROUP BY CS_ITEM_SK))) 

INTERSECT 

SELECT WS_ITEM_SK AS POP_ITEM_SK FROM (SELECT WS_ITEM_SK
FROM (SELECT WS_ITEM_SK,(ITEM_SOLD-ITEM_RETURNED) AS TOT_SOLD_QTY FROM (SELECT WS_ITEM_SK,COUNT(WS_ITEM_SK) AS ITEM_SOLD,COUNT(WR_ITEM_SK) AS ITEM_RETURNED FROM WEB_SALES1 right outer join WEB_RETURNS1 on WS_ORDER_NUMBER = WR_ORDER_NUMBER AND WS_ITEM_SK = WR_ITEM_SK GROUP BY WS_ITEM_SK))) 

Apache phoenix не поддерживает ключевое слово INTERSECT. Может ли кто-нибудь помочь мне исправить вышеуказанный запрос без использования INTERSECT?

1 Ответ

0 голосов
/ 30 января 2020

Я думаю, что есть несколько способов сделать это:

  1. Метод соединения

    select * from ((query1 inner join query2 on column_names) inner join query3 on column_names) 
    
  2. Метод Exists

    (query1 where exists (query2 where exists (query3)) )
    
  3. In Method

    (query1 where column_name in (query2 where column_name in (query3)) )
    

Ссылки: https://blog.jooq.org/2015/10/06/you-probably-dont-use-sql-intersect-or-except-often-enough/ и http://phoenix.apache.org/subqueries.html

Несмотря на то, что я бы использовал существующий / входящий по сравнению с объединением, поскольку, если эти запросы возвращают огромные данные, вам, возможно, придется оптимизировать свои запросы, используя это: https://phoenix.apache.org/joins.html

...