После запуска этого запроса на df1,
"SELECT 'max' type, user, MAX(daytime) time FROM df1 UNION ALL SELECT 'min' type, user, MIN(daytime) time FROM df1")
Я получаю что-то вроде этого:
type user time
max a 679..
min b 12..
У меня есть еще один набор данных:
id email
a [email protected]
b [email protected]
Я хочу присоединиться к ним, чтобы мой конечный результат был таким:
type user time email
max a 679.. [email protected]
min b 12.. [email protected]
в идеале в том же запросе. Я пробовал это:
"SELECT 'max' type, user, MAX(daytime) time FROM df1 UNION ALL SELECT 'min' type, user, MIN(daytime) time FROM df1 LEFT JOIN df2 ON df2.id == df1.user")
до сих пор он не выдает ошибку, но как только я выбираю столбцы из df2,
"SELECT email, 'max' type, user, MAX(daytime) time FROM df1 UNION ALL SELECT 'min' type, user, MIN(daytime) time FROM df1 LEFT JOIN df2 ON df2.id == df1.user")
Я получаю ошибки, которые:
PandaSQLException: (sqlite3.OperationalError) no such column: email
Вы должны присоединиться к результату объединения как подзапрос к df2
:
SELECT t.*, df2.email
FROM (
SELECT 'max' type, user, MAX(daytime) time FROM df1
UNION ALL
SELECT 'min' type, user, MIN(daytime) time FROM df1
) t LEFT JOIN df2 ON df2.id = t.user;
Вы не можете присоединиться только к двум таблицам и объединить их в другой выбор
SELECT type, df3.user, time, email
FROM
(SELECT 'max' type, user, MAX(daytime) time FROM df1 UNION ALL SELECT 'min' type, user, MIN(daytime) time FROM df1) df3
LEFT JOIN df2 ON df2.id == df3.user
Пожалуйста, отформатируйте запросы, чтобы мы могли их прочитать.