Jam*_*esK 4 sql group-by aggregate-functions
我有一个与此类似的表:
STOCK_ID TRADE_TIME PRICE VOLUME
123 1 5 100
123 2 6 150
456 1 7 200
456 2 8 250
Run Code Online (Sandbox Code Playgroud)
对于每只股票,我想获得最新价格(其中最新只是最大交易时间)和汇总交易量,因此对于上表我想看到:
123 6 250
456 8 450
Run Code Online (Sandbox Code Playgroud)
我刚刚发现当前查询并不(总是)有效,即不能保证所选价格始终是最新的:
select stock_id, price, sum(volume) group by stock_id
Run Code Online (Sandbox Code Playgroud)
这可以在没有子查询的情况下完成吗?谢谢!
由于您没有指定您正在使用的数据库,因此这里有一些通用 SQL 可以完成您想要的操作。
SELECT
b.stock_id,
b.trade_time,
b.price,
a.sumVolume
FROM (SELECT
stock_id,
max(trade_time) AS maxtime,
sum(volume) as sumVolume
FROM stocktable
GROUP BY stock_id) a
INNER JOIN stocktable b
ON b.stock_id = a.stock_id and b.trade_time = a.maxtime
Run Code Online (Sandbox Code Playgroud)