我在 sql 中有一段代码,试图按 trades.id 字段的数字顺序获取投资组合、某些交易的股价。
问题是下面代码中的两个值都必须按数字顺序返回,以便根据权重计算某种类型的分配。
但是,
投资组合相对于trades.id字段的返回顺序如下
0,1,2,3,4,5,6...
从“股”派生的“权重”的返回顺序如下
1,2,3,4,5,6....0
它们的顺序都应该是0,1,2,3,4,5,6
PS。不是我的代码,但我必须修复它才能使应用程序正常工作SELECT
'O' AS Hint,
GROUP_CONCAT(trades.id
ORDER BY trades.id) AS ID,
GROUP_CONCAT( (trades.Portfolio)
ORDER BY trades.id) AS Portfolio,
Ticker,
Direction,
FORMAT(SUM(Shares), 0) AS 'Shares',
FORMAT(SUM(Shares), 0) AS 'Original Shares',
Price,
Broker AS Broker1,
Commission,
GROUP_CONCAT(FORMAT
(trades.Shares/
(SELECT SUM(Shares) FROM db.Trades WHERE id IN ('102370' , '102371','102372','102373','102374','102375','102376','102377','102380','102400')),12)) AS Weights,
Issuer
FROM
db.Trades
WHERE
id IN ('102370' , '102371',
'102372',
'102373',
'102374',
'102375',
'102376',
'102377',
'102380',
'102400')
AND is_deleted = '0'
GROUP BY Ticker , Direction , Price , Commission
ORDER BY trades.id
最佳答案
我刚刚修复了该错误。包装股票
的group_concat
方法中的代码缺少order by trades.id
。
(trades.Shares/
(SELECT SUM(Shares)
FROM db.Trades WHERE id IN
('102370''102371','102372','102373','102374','102375','102376','102377','102380','102400')),12)
order by trades.id) AS Weights -- <- here
关于MySQL 排序依据不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52783894/