确定特定时间范围内价值的持续增长

Determine persistent growth in value during a specific time range

给定以下数据集示例,我应该如何构建我的 SQL 查询以确定 value 是否 逐渐 增长通过返回 true/false 结果

为特定 user_id 的查询指定时间范围
user_id date value
1 4/1/2021 12:00 350
1 4/2/2021 12:00 400
1 4/3/2021 12:00 450
5 4/4/2021 12:00 560
5 4/5/2021 12:00 566
5 4/6/2021 12:00 483
5 4/7/2021 12:00 570

根据上面的例子,我们可以观察到 user_id=1value 一天一天地增长,而 user_id=5value 已经连续 2 天增长天,但在第三天反弹。

因此,user_id=1user_id=5 的预期结果集将是:

user_id value_is_increasing
1 true

user_id=5 的预期结果集为:

user_id value_is_increasing
5 false

声明更新:我想确定该值是否在特定时间范围内以逐日(连续)的方式不断增长。此外,个别值点应该被认为是嘈杂的(即使它们随着时间的推移呈上升或下降趋势,它们也会上下反弹)并影响结果。

使用聚合:

SELECT user_id, 
       GROUP_CONCAT(value ORDER BY date) = GROUP_CONCAT(value ORDER BY value) value_is_increasing
FROM tablename
GROUP BY user_id
HAVING COUNT(*) > 1 
   AND COUNT(*) = COUNT(DISTINCT value)

条件 COUNT(*) > 1 将 return 仅在 table 中具有超过 1 个值的用户。
条件 COUNT(*) = COUNT(DISTINCT value) 将 return 仅在 table.
中具有不同值的用户 GROUP_CONCAT(value ORDER BY date) 将 return 值按 date 排序,
GROUP_CONCAT(value ORDER BY value) 将 return 值按 value.
排序 如果 2 GROUP_CONCAT() 的结果相同,这意味着 value 是单调递增的。

参见demo