#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. это всегда одно и то же, внешний выбор понятен, потому что это то, о чем вы просили, остальное-объединение или объединение, чтобы объединить два подзапроса, так как мы не можем написать отверстие в одном подзапросе. трудно становится, когда вам приходится задействовать гораздо больше таблиц для получения ваших данных