Задать вопрос
@Loonerd2

Как объединить несколько запросов в один?

Имеется база данных с позициями поисковых запросов. Сейчас приходится для каждого из городов прописывать отдельный запрос и получать нужные данные. Пример запроса:
SELECT Query AS "Ключевая фраза",
   SUM(CASE Updated WHEN '2021-05-20'  THEN Yandex ELSE 0 END) AS "Я 2021-05-20 Екб"
 
FROM Queries c LEFT JOIN
   SitePositions o ON c.Id = o.QueryId
   WHERE SiteId = 33 AND RegionCode = 54
GROUP BY QueryId


Суть в RegionCode. Например, для Екатеринбурга он может быть 54. Условно говоря, для воронежа - 193. Какой результат получается:
60ab5db442319414148766.png

Для Воронежа используется следующий запрос:
SELECT Query AS "Ключевая фраза",
   SUM(CASE Updated WHEN '2021-05-20'  THEN Yandex ELSE 0 END) AS "Я 2021-05-20 Воронеж"
 
FROM Queries c LEFT JOIN
   SitePositions o ON c.Id = o.QueryId
   WHERE SiteId = 33 AND RegionCode = 193
GROUP BY QueryId


Каким образом мне следует дополнить запрос, чтобы объединить два этих запроса в 1? Ожидаемый результат примерно следующий:
60ab5eff0c709141917838.png

Структура таблиц Queries и SitePosition следующая соответственно:
60ab5f6e5c044734516839.png
60ab5f82885bd111990339.png
  • Вопрос задан
  • 351 просмотр
Подписаться 1 Простой 3 комментария
Решения вопроса 2
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
SELECT 
	Query AS "Ключевая фраза",
	SUM(CASE WHEN (Updated = '2021-05-20' AND RegionCode = 54) THEN Yandex ELSE 0 END) AS "Yandex ekb",
	SUM(CASE WHEN (Updated = '2021-05-20' AND RegionCode = 193) THEN Yandex ELSE 0 END) AS "Yandex vor"
FROM Queries c 
LEFT JOIN SitePositions o ON c.Id = o.QueryId
WHERE SiteId = 33
GROUP BY QueryId, Query;


SQLite fiddle
Ответ написан
samodum
@samodum
Какой вопрос - такой и ответ
UNION
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы