gpt4 book ai didi

mysql查询来识别状态的变化

转载 作者:行者123 更新时间:2023-11-29 07:47:45 25 4
gpt4 key购买 nike

我在 mysql query, return rows when condition is satisfied 上发布了更新的问题

感谢那些帮助过的人...

好吧,我正在对此进行第二次尝试,因为我搞砸了原来的问题。我已经更正了日期格式以匹配 mysql。此外,我实际上是根据值的百分比导出查询中的状态值,即,如果它在最高观察值的 85% 以内,则将其标记为高,如果在低水位线的 15% 以内,则将其标记为低。

其格式为名称、测试日期、分数。

所以类似

John, 2014-10-12, 87
John, 2014-10-13, 87
John, 2014-10-14, 33
John, 2014-10-15, 32
John, 2014-10-16, 44
John, 2014-10-17, 87
John, 2014-10-18, 89
John, 2014-10-19, 90
Jane, 2014-10-12, 32
Jane, 2014-10-13, 87
Jane, 2014-10-14, 33
Jane, 2014-10-15, 88
Jane, 2014-10-16, 44
Jane, 2014-10-17, 87
Jane, 2014-10-18, 89
Jane, 2014-10-19, 90

这是我当前必须返回仅在高水位线或低水位线内的数据的查询。

select userdata.name, test_date, score, if(score >=.85*temp.High,"High","Low")
from userdata
inner join (select name, Min(score) as Low, Max(score) as High
from userdata where (test_date between '2013-12-02' and '2014-12-01') group by name)
as temp on userdata.name=temp.name where (score >= .85*temp.High or score <= 1.15*temp.Low)
and test_date between '2013-12-02' and '2014-12-01' order by name, test_date

假设最高为 96,最低为 35,则返回如下数据

 John, 2012-12-02, 90, High
John, 2012-12-03, 40, Low
John, 2012-12-04, 41, Low
John, 2012-12-05, 95, High
John, 2012-12-05, 94, High
John, 2012-12-02, 90, High
Jane, 2012-12-03, 40, Low
Jane, 2012-12-04, 41, Low
Jane, 2012-12-05, 41, Low
Jane, 2012-12-06, 41, Low
Jane, 2012-12-06, 41, Low
Jane, 2012-12-11, 89, High

现在我想看看是否可以修改我的查询以仅返回更改的状态。我查看了提供的答案,但我无法将它们与原始查询结合起来以产生所需的结果。感谢您已经提供的帮助,对于第一次没有正确表达我的问题,我深表歉意。

最佳答案

您可以使用 MySQL 变量来完成此操作。

只要日期不匹配并且条件不匹配,您就可以标记该行

您需要按名称和日期对行进行排序,以便比较相邻的日期。

SQL Fiddle

select name,  prevDate, prevCondition
from
(
select name, `date`, `value`, `condition`,
case when `date`<> @prevDate and `condition` <> @prevCondition
then 1
else 0
end as flag,
@prevDate := date AS prevDate,
@prevCondition := `condition` AS prevCondition
from table1, ( select @prevCondition:= NULL , @prevDate = NULL) as t
order by name, `date` )T
where T.flag =1

关于mysql查询来识别状态的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27258864/

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