Посчитать максимальное количество одинаковых значений подряд - MySQL
Формулировка задачи:
Решение задачи: «Посчитать максимальное количество одинаковых значений подряд»
set @i=0, @p=0; SELECT t.date_open, t.result_price FROM ( SELECT * FROM `deals` ORDER BY `date_open`, `time_open` ) AS t WHERE ( (if (@p=date_open, @i:=@i+1,(@i:=0) or (@p:=date_open))) and @i<2);
Объяснение кода листинга программы
В этом коде используются две переменные, которые установлены в начальное значение 0: @i и @p. Затем выполняется запрос SELECT, который выбирает столбцы date_open и result_price из таблицы deals
.
Однако ключевая часть кода находится в подзапросе, который вычисляется сначала. В этом подзапросе используется функция IF, которая проверяет, равна ли дата текущей записи дате предыдущей записи. Если это так, то переменная @i увеличивается на 1. Если это не так, то переменная @i сбрасывается обратно в 0, а переменная @p присваивается значение текущей даты.
Таким образом, этот подзапрос вычисляет серию дат, где дата следующей записи либо равна, либо не равна дате предыдущей записи. Затем основной запрос выбирает только первые две записи из этой серии.
Этот код вычисляет максимальную серию одинаковых дат в таблице deals
, где дата следующей записи либо равна, либо не равна дате предыдущей записи, и ограничивает эту серию до двух записей.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д