SQL两个查询组合方法

问题描述 投票:-1回答:1
SELECT ROWNUM rn, a.sido, a.sigungu, a.city_idx
FROM
    (SELECT bk.sido, bk.sigungu, bk.cnt, lot.cnt, ROUND((bk.cnt + kfc.cnt + mcd.cnt)/ lot.cnt, 2) city_idx
    FROM
            (SELECT sido, sigungu, COUNT(gb) cnt
                    FROM fastfood
                    WHERE gb = 'bugerking'
                    GROUP BY sido, sigungu, gb) bk,

            (SELECT sido, sigungu, COUNT(gb) cnt
                    FROM fastfood
                    WHERE gb = 'KFC'
                    GROUP BY sido, sigungu, gb) kfc,

            (SELECT sido, sigungu, COUNT(gb) cnt
                    FROM fastfood
                    WHERE gb = 'mcdonalds'
                    GROUP BY sido, sigungu, gb) mcd,
            (SELECT sido, sigungu, COUNT(gb) cnt
                    FROM fastfood
                    WHERE gb = 'lotteria'
                    GROUP BY sido, sigungu, gb) lot
            WHERE bk.sido = kfc.sido
            AND bk.sigungu = kfc.sigungu
            AND bk.sido = mcd.sido
            AND bk.sigungu = mcd.sigungu
            AND bk.sido = lot.sido
            AND bk.sigungu = lot.sigungu
            ORDER BY city_idx DESC ) a

第一次查询

SELECT SIDO, SIGUNGU,ROUND(SAL/PEOPLE,2) tax
FROM TAX
GROUP BY SIDO, SIGUNGU,SAL,PEOPLE

二问

我想要控制台的结果

RN,(第一)SIDO,(第一)SIGUNGU,CITY_IDX,(第二)SIDO,(第二)SIGUNGU,TAX。

先谢谢了。

sql oracle
1个回答
0
投票

我想你是想用SIDO连接两个结果,然后用类似的方法。

select f.RN, f.SIDO, f.SIGUNGU, f.CITY_IDX, s.SIDO, s.SIGUNGU, s.TAX 
from (SELECT ROWNUM rn, a.sido, a.sigungu, a.city_idx
      FROM (SELECT bk.sido, bk.sigungu, bk.cnt, lot.cnt, ROUND((bk.cnt + kfc.cnt + 
                   mcd.cnt)/ lot.cnt, 2) city_idx
            FROM
            (SELECT sido, sigungu, COUNT(gb) cnt
                    FROM fastfood
                    WHERE gb = 'bugerking'
                    GROUP BY sido, sigungu, gb) bk,

            (SELECT sido, sigungu, COUNT(gb) cnt
                    FROM fastfood
                    WHERE gb = 'KFC'
                    GROUP BY sido, sigungu, gb) kfc,

            (SELECT sido, sigungu, COUNT(gb) cnt
                    FROM fastfood
                    WHERE gb = 'mcdonalds'
                    GROUP BY sido, sigungu, gb) mcd,
            (SELECT sido, sigungu, COUNT(gb) cnt
                    FROM fastfood
                    WHERE gb = 'lotteria'
                    GROUP BY sido, sigungu, gb) lot
            WHERE bk.sido = kfc.sido
            AND bk.sigungu = kfc.sigungu
            AND bk.sido = mcd.sido
            AND bk.sigungu = mcd.sigungu
            AND bk.sido = lot.sido
            AND bk.sigungu = lot.sigungu
            ORDER BY city_idx DESC ) a) f, 
    (SELECT SIDO, SIGUNGU,ROUND(SAL/PEOPLE,2) tax
       FROM TAX
      GROUP BY SIDO, SIGUNGU,SAL,PEOPLE) s 
where f.sido = s.sido;
© www.soinside.com 2019 - 2024. All rights reserved.