【发布时间】:2023-04-09 00:27:02
【问题描述】:
在 MySQL 5.7 中,我试图计算加密货币的每日回报。这个计算是LN(Day2Close/Day1Close)。
我的表结构如下。 CoinIndex 包括每个硬币中的天数。所以BTC数据第一天的coinIndex为1,ETH数据的第一天coinIndex也为1。每天都有数据。:
CREATE TABLE `histoday2` (
`id` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`coinId` mediumint(7) DEFAULT NULL COMMENT 'Crypto Compare CoinID',
`time` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL,
`fsym` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL,
`tsym` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL,
`close` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`high` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`low` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`open` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`volumefrom` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`volumeto` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
`coinIndex` int(11) DEFAULT NULL,
`totalReturn` decimal(6,2) DEFAULT NULL,
UNIQUE KEY `id` (`id`)
)
我的查询抛出 LN() 只能包含一个操作数的错误。我不确定如何构造这个查询:
SELECT coinId, time, close,
(SELECT close, LN(A.close/close)
FROM histoday2
WHERE coinIndex = A.coinIndex -1
AND coinId = A.coinId) B
FROM histoday2 A;
【问题讨论】:
-
请编辑您的问题以显示(作为文本,而不是图像)
show create table histoday2;的输出;这更有帮助。 -
这取决于您所拥有的内容,因此请提供一些示例数据dbfiddle.uk/…
-
你得到的确切错误是什么?你确定你显示的查询有这个错误吗?
-
@ysth 上面添加的结构。确切的错误是
#1241 - Operand should contain 1 column(s) -
你只有一个操作数。如果您改为写
LN(a.close, close),则会收到该错误。
标签: mysql