首页 > 解决方案 > SQL 需要帮助修复/修改/完成代码

问题描述

我正在努力找出我的代码练习解决方案的问题。我认为我开始得很好并且有很好的基础,但它不会运行(得到一个无效的标识符错误)。也许我的代码太乱或没有意义?没有把握。如果你们能想出更好的方法来修复此代码解决方案/回答查询,请告诉我。

我正在使用 Oracle SQL Developer。问题和ERD如下。先感谢您

对于每个证券交易所,显示总交易份额最高的股票代码。显示证券交易所名称、股票代码和总交易份额。按证券交易所名称和股票代码对输出进行排序。

WITH HighestTradeVolume   
    (SELECT COUNT(trade.shares) total_trades,
            stock_listing.stock_symbol AS "Stock symbol",       
            stock_exchange.symbol AS "Stock Exchange Symbol",          
            stock_exchange.name AS "Stock Exchange"    
    FROM stock_exchange       
         JOIN trade    
              ON trade.stock_ex_id = stock_exchange.stock_ex_id    
         JOIN stock_listing
              ON stock_listing.stock_id = trade.stock_id
              AND stock_listing.stock_ex_id = trade.stock_ex_id     
    GROUP BY stock_exchange.name, stock_exchange.symbol, stock_listing.stock_symbol
        ORDER BY stock_exchange.name, stock_exchange.symbol, stock_listing.stock_symbol)    
    HAVING SUM(trade.shares) = (SELECT MAX(SUM(trade.shares))    
                                 FROM trade );

ERD

标签: sqloracle

解决方案


您在 ORDER BY 行的末尾有一个额外的括号,末尾也缺少括号。

ORDER BY stock_exchange.name, stock_exchange.symbol, stock_listing.stock_symbol --) Extra   
HAVING SUM(trade.shares) = (SELECT SUM(trade.shares) FROM trade ) --Applying MAX is not required.
) --Missing
;   

推荐阅读