@valeriy_good

Как поменять данные в столбце по самому большому значению?

Изучаю sql, не могу выполнить задание.
Есть у меня таблица:

|id                    | quarter              | latest_vizit_date   |
=====================================================================
|1                     | 1                    | 2019-03-28          |
|1                     | 2                    | 2021-05-19          |
|1                     | 3                    | 2018-09-25          |
|1                     | 4                    | 2018-12-27          |
|2                     | 1                    | 2021-03-18          |
|2                     | 2                    | 2021-06-03          |
|2                     | 3                    | 2020-09-03          |
|2                     | 4                    | 2020-12-10          |


Мне в столбце latest_vizit_date заменить все даты на самую позднюю (бОльшую, последнюю). На выходе должно быть следующее:

|id                    | quarter              | latest_vizit_date   |
=====================================================================
|1                     | 1                    | 2021-05-19          |
|1                     | 2                    | 2021-05-19          |
|1                     | 3                    | 2021-05-19          |
|1                     | 4                    | 2021-05-19          |
|2                     | 1                    | 2021-06-03          |
|2                     | 2                    | 2021-06-03          |
|2                     | 3                    | 2021-06-03          |
|2                     | 4                    | 2021-06-03          |


Есть догадка, что должно быть как-то так:
update mytable
set latest_vizit_date = @max_date


Но как определить @max_date не знаю. Пытался так: @max_date := max(latest_vizit_date) - ищется по всему столбцу, а мне надо чтоб с учетом отдельного id и в рамках кварталов с 1 по 4.
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
vilinyh
@vilinyh
update mytable, (
  select id, max(last_vizit_date) as max_date
  from mytable
  group by id
) x set
  mytable.last_vizit_date = x.max_date
where x.id = mytable.id
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы