Mysql объединяет общие результаты за этот год и последний квартал прошлого года?

#mysql #sql #inner-join

Вопрос:

Мне никогда не приходилось делать этого раньше, и я пытался искать в Интернете и действительно даже не знаю, что я ищу. Я должен отобразить все результаты за текущий год, но также объединить эти результаты с последним кварталом прошлого года. Таким образом, запрос для отображения всех результатов за этот год выглядит следующим образом:

SELECT distinct(jurisdiction), total_miles FROM test_a WHERE year = '2021' ORDER BY year DESC, quarter DESC, jurisdiction ASC

и включить результаты за последний квартал-это:

SELECT distinct(jurisdiction), total_miles FROM test_a WHERE year = '2020' AND quarter ='4'

Структура БД является:

 quarter
year
jurisdiction
total_miles
 

примером вывода может быть:

 Q1 2021 TX 100 miles
Q1 2021 CA 20 miles
Q2 2021 TX 50 miles

Q4 2020 AL 500 miles
 

Каким будет запрос на объединение результатов за этот год и квартал прошлого года? Даже мой первый запрос неверен, так как он не будет суммировать все мили за каждый квартал текущего года.

Таким образом, если бы в этом году юрисдикция штата Техас имела 100 миль, а в четвертом квартале прошлого года-50 миль, это просто привело бы к тому, что юрисдикция штата Техас имеет 150 миль. Это составило бы все мили от каждой юрисдикции. Спасибо, что уделили мне время.

Комментарии:

1. Без структуры таблиц и примеров данных это мало чем поможет. Похоже, вам нужно использовать sum() и group by

2. Спасибо, я отредактирую свой оригинальный пост, чтобы добавить структуру.

Ответ №1:

2021 год Вы должны СГРУППИРОВАТЬ ПО юрисдикции, чтобы получить общее количество за этот год, остальное должно быть ВНУТРЕННИМ ОБЪЕДИНЕНИЕМ

 SELECT t1.jurisdiction, t1.total_miles   t2.total_miles as totalmile 
FROM
(SELECT jurisdiction, SUM(total_miles) as total_miles FROM test_a WHERE year = '2021' GROUP BY jurisdiction) t1
INNER JOIN (SELECT distinct(jurisdiction), total_miles FROM test_a WHERE year = '2020' AND quarter ='4') t2 ON t1.jurisdiction = t2.jurisdiction
ORDER BY t1.jurisdiction ASC
 

Комментарии:

1. Вау, я люблю тебя, чувак! Как, черт возьми, тебе удалось так быстро это понять? Ха-ха, я никогда не мог делать внутренние соединения, и у меня было такое чувство, что это именно то, что нужно. Я больше не пытаюсь возиться с программированием, но у меня есть несколько небольших личных проектов, которые я делаю сам для своей новой карьеры, чтобы следить за происходящим.

2. это всегда одно и то же, внешний выбор понятен, потому что это то, о чем вы просили, остальное-объединение или объединение, чтобы объединить два подзапроса, так как мы не можем написать отверстие в одном подзапросе. трудно становится, когда вам приходится задействовать гораздо больше таблиц для получения ваших данных