SQL несколько запросов для получения данных в день - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть две таблицы с данными (Units_raw & Units_raw_andr). Я хочу получить единицы обеих таблиц по дате. Я новичок в объединении таблиц в один запрос, но попробовал следующее:

SELECT `DateKey` AS 'date', `InstallEvents` AS 'DownloadAndroid' FROM `Units_raw_andr`
UNION 
SELECT `datetime` AS 'date', `units` AS 'DownloadiOS' FROM `Units_raw` GROUP BY 'date';

Это дает мне следующий результат:

 [ DATE ]    | [ DownloadAndroid ]
2020-04-04   |       293
2020-04-03   |       210

Я хочу добиться этого:

 [ DATE ]    |   [ DownloadAndroid ]   |   [DownloadiOS]
2020-04-04   |          293            |        301
2020-04-03   |          210            |        202

Что я делаю не так и как мне заставить это работать?

1 Ответ

0 голосов
/ 14 апреля 2020

Операция, которая делает наборы данных шире (больше столбцов), называется JOIN. Операция, которая делает наборы данных выше (больше строк), является СОЮЗОМ

Как таковая, я думаю, вы хотите:

SELECT COALESCE(i.DateKey, a.DateKey) AS `Date`, a.InstallEvents AS DownloadAndroid, i.DownloadIOS
FROM 
  Units_raw_andr a
  FULL OUTER JOIN
  (
    SELECT `datetime` AS DateKey , units AS DownloadiOS 
    FROM Units_raw
    GROUP BY `datetime`
  ) i
  ON a.DateKey = i.DateKey

Конечно, закон Мерфи будет диктовать, что он Вы увидите, что вы используете старую версию MySQL, которая не поддерживает полное внешнее соединение, и в этом случае вам нужно будет выполнить левое внешнее объединение с правым внешним объединением.

Возможно, вы не сможете изменить его сейчас, но очень старайтесь НЕ использовать слова, которые являются зарезервированными словами в SQL, в качестве имен столбцов. Такие вещи, как «Дата» и «DateTime» являются а) зарезервированными словами и б) относительно бессмысленными - подумайте о более описательных именах, которые говорят, что такое дата, например InstallDate, ShippingDate, PurchaseDate и c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...