表架构:
id(P) date price
想要使用
"select date,price,count(price) from table group by price having count(price)>=5"
导致具有相同价格且不是线性的所有那些行(在这种情况下为5或更多)的组 例如。如果1,2,3,4,5,6是ids,5,6,7,8,9,10是日期,各自的价格为2,3,2,2,2,2 ,结果如下:
date price count(*)
5 2 5
但问题是我只想要那些连续5行或更多行具有相同价格的行。所以上述结果只有在价格序列如下时才会出现
2,2,2,2,2,3
感谢。
答案 0 :(得分:1)
您需要按ORDER
date
记录并将计数(连续价格)存储到临时变量中,例如:
SELECT id, price, `date`,
IF(@previous = `price`, @count := @count + 1, @count := 1) AS `count`,
@previous := `price`
FROM test, (SELECT @previous := 0, @count := 1) a
ORDER BY date;
完成后,您可以将此查询包装到另一个SELECT
中,并过滤计数大于5的记录,例如:
SELECT DISTINCT(b.price) FROM (
SELECT id, price, `date`,
IF(@previous = `price`, @count := @count + 1, @count := 1) AS `count`,
@previous := `price`
FROM test, (SELECT @previous := 0, @count := 1) a
ORDER BY date
) b
WHERE b.count >= 5;
这是 SQL Fiddle 。