我对sql相当缺乏经验,我有一个类似这样的表(简化版):
ID | Dataset | date | value
我试图用一个基线来划分每个值,这将是该特定数据集在数据库中的第一个条目。
例如,对于dataset1,如果2018年5月5日的值是28,而2018年1月1日数据库中的第一个值是4,那么我希望结果是28/4。
问题是并不是每个数据集都同时添加到数据库中,所以它们的基线日期不同。因此,如果dataset1的第一个条目是在2018年1月1日,那么dataset2的第一个条目可能是在2018年2月2日。
我该如何处理这个问题?我尝试了一个简单的div,但似乎我只能除以一个数字,而不是一个value-by-value表。
我试过这样的方法:
SELECT DATE(date) as time, value, dataset / (
SELECT min(DATE(date)) as time, value, dataset FROM table GROUP BY dataset)
FROM table GROUP BY time, dataset
但我认为sql希望分母在本例中是单个值,而不是表。
3条答案
按热度按时间fdbelqdn1#
看看这个:
r6vfmomb2#
“我认为sql希望分母在这种情况下是一个单一的值,而不是一个表。”您的思路是正确的,因此sub select需要返回一个单一的值,下面是一个示例:
of1yzvn43#
在mysql 8+中,您只需执行以下操作: