我有一个mysql查询,它从数据库中提取一组记录。我想在我的应用程序中使用稍微不同的聚合方式。当记录集中存在重复行且具有相同的票证价值时,查询将合计估计单位和估计交易价值,并在新列中显示为合计估计单位和合计估计交易价值。如果没有具有相同报价器值的重复项,则应将total \u est \u units显示为est \u units,total \u est \u trans \u value显示为est \u trans \u value。我该怎么做--你能帮我修改这个查询吗?
sql语句:
SELECT
oc.*
FROM
order_confirm_daily oc
INNER JOIN
(SELECT
id, ticker, MAX(est_order_time) AS mts
FROM
order_confirm_daily
WHERE DATE(est_order_time) LIKE '2021-04-26%'
GROUP BY ticker) ds ON ds.ticker = oc.ticker
AND oc.est_order_time = ds.mts;
样本数据:
期望结果:添加了两个新的派生列“total\u est\u units”和“total\u est\u trans\u value”,仅当多行显示同一个ticker时,才会分别显示est\u units和est\u trans\u value之和——这里是屏幕截图中突出显示的“tna”。
1条答案
按热度按时间6ss1mwsb1#
我懂了。您只需要窗口功能:
编辑:
在mysql的旧版本中,您将使用
JOIN
以及GROUP BY
: