确定特定时间范围内价值的持续增长
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=1
的 value
一天一天地增长,而 user_id=5
的 value
已经连续 2 天增长天,但在第三天反弹。
因此,user_id=1
和 user_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。
给定以下数据集示例,我应该如何构建我的 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=1
的 value
一天一天地增长,而 user_id=5
的 value
已经连续 2 天增长天,但在第三天反弹。
因此,user_id=1
和 user_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。