gpt4 book ai didi

php - MySQL : group by column and get date range

转载 作者:可可西里 更新时间:2023-11-01 06:48:28 28 4
gpt4 key购买 nike

我有一张这样的 table

id - price - date
1 - 10 - 01/01/2017
2 - 10 - 02/01/2017
3 - 10 - 03/01/2017
4 - 10 - 04/01/2017
5 - 10 - 05/01/2017
6 - 20 - 06/01/2017
7 - 20 - 07/01/2017
8 - 20 - 08/01/2017
9 - 20 - 09/01/2017
10 - 10 - 10/01/2017
11 - 10 - 11/01/2017
12 - 10 - 12/01/2017
13 - 10 - 13/01/2017

我想这样显示结果

10 - 01/01/2017 - 05/01/2017
20 - 06/01/2017 - 09/01/2017
10 - 10/01/2017 - 13/01/2017

我的查询是

SELECT price, min(date), max(date) FROM mytable GROUP BY price

但结果是

20 - 06/01/2017 - 09/01/2017
10 - 10/01/2017 - 13/01/2017

我可以用 mysql 查询得到正确的结果还是必须找到一个 php 解决方案?

最佳答案

这是一个差距和孤岛问题。您可以使用变量来检测具有相同 price 值的连续记录的孤岛:

SELECT price, MIN(`date`) AS start_date, MAX(`date`) AS end_date
FROM (
SELECT id, price, `date`,
@rn := @rn + 1 AS rn,
-- If price remains the same then increase island population,
-- otherwise reset it
@seq := IF(@p = price, @seq + 1,
IF(@p := price, 1, 1)) AS seq
FROM mytable
CROSS JOIN (SELECT @p := 0, @rn := 0, @seq := 0) AS vars
ORDER BY `date`) AS t
GROUP BY price, rn - seq

关于php - MySQL : group by column and get date range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42116433/

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