MYSQL чтобы получить разницу в значении в том же столбце, но поле часа - это разница в той же таблице - PullRequest
0 голосов
/ 19 марта 2020

Как получить другое значение в той же таблице, данные изменяются в зависимости от часов

Структура таблицы

Current Table
country | hour | date | total
China | 22 | 18-March-2020 | 25777
China | 23 | 18-March-2020 | 35477
China | 24 | 18-March-2020 | 45777
India| 22 | 18-March-2020 | 4547
India | 23 | 18-March-2020 | 5477
India | 24 | 18-March-2020 | 6478

ищет результат

China | 23 | 35477 - 25777
China | 24 | 45777-35477

То же, что и в других странах.

1 Ответ

1 голос
/ 19 марта 2020

В MySQL 8.0 вы можете использовать оконные функции:

select
    t.*,
    concat(total, ' - ', lag(total) over(partition by country, date order by hour)) info
from mytable

Если вы хотите исключить первую строку в группе, вы можете использовать подзапрос:

select *
from (
    select
        t.*,
        concat(total, ' - ', lag(total) over(partition by country, date order by hour)) info
    from mytable
) t
where info is not null

В более ранних версиях вы могли самостоятельно присоединиться к таблице:

select t.*, concat(t.total, ' - ', tlag.total) info
from mytable t
inner join mytable tlag 
    on tlag.country = t.country and tlag.date = t.date and tlag.hour = t.hour - 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...