gpt4 book ai didi

MySql 选择过去一天内两行之间的最大差异

转载 作者:行者123 更新时间:2023-11-29 05:31:14 24 4
gpt4 key购买 nike

我有一张看起来像这样的 table

id  |  name  |  c1  |  c2  |  c3  |  c4  |  time
-------------------------------------------------
1 | miley | 23 | 11 | 21 | 18 | 2013-01-13 20:26:25
2 | john | 31 | 29 | 23 | 27 | 2013-01-14 20:26:25
3 | steve | 44 | 31 | 33 | 35 | 2013-01-14 20:26:25
4 | miley | 34 | 44 | 47 | 48 | 2013-01-15 08:26:25
5 | john | 27 | 53 | 49 | 52 | 2013-01-15 08:26:25
6 | steve | 27 | 62 | 50 | 64 | 2013-01-16 08:26:25
7 | miley | 44 | 54 | 57 | 87 | 2013-01-16 20:26:25
8 | john | 37 | 93 | 59 | 62 | 2013-01-17 20:26:25
9 | steve | 85 | 71 | 87 | 74 | 2013-01-17 20:26:25
...etc

*注意:这是我随机制作的表格,只是为了让您了解我的表格的样子

我需要获取在特定日期范围内特定列中变化最大的人的姓名。我尝试了一堆不同的查询,但都无法正常工作。我认为我最接近的解决方案是...

SELECT table1.name, MAX(table1.c1-h.c1) as maxDiff 
FROM table_a as table1
LEFT JOIN table_a as table2
ON table2.name=table1.name AND table1.c1>table2.c1
WHERE table2.c1 IS NOT NULL

我做错了什么?明确地说,我希望能够选择一个日期范围,然后确定谁在确定的列中具有该日期范围内最大的差异。另请注意,数据只会随着时间的推移而增加,因此任何一天的第一次捕获将始终 <= 该人当天的最后一次捕获。

最佳答案

听起来您需要嵌套查询。首先,查询每个人在日期范围内自己的测量结果,然后按最大的顺序排序并取前 1 名……这样的事情可能对您有用……

select
PreGroupByName.`Name`,
PreGroupByName.MaxC1 - PreGroupByName.MinC1 as MaxSpread
from
( select
t1.`Name`,
min( t1.c1 ) as MinC1,
max( t1.c1 ) as MaxC1
from
table_a t1
where
t1.`time` between '2013-01-01' and '2013-01-17' -- or whatever date/time range
group by
t1.`Name` ) as PreGroupByName
order by
MaxSpread DESC
limit 1

关于MySql 选择过去一天内两行之间的最大差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14492314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com