Это может показаться дублирующимся, но я не смог найти ответ, соответствующий моим требованиям. Написал here, но его не совсем то же самое, и ответы на меня не касаются. Отсюда и вопрос.Как выбрать данные на основе нескольких уникальных столбцов без применения агрегатных функций в остальном столбце в наборе результатов
SELECT tab1.col1, tab1.col2, tab1.col3, tab2.col3, tab2.col4
from
(SELECT col1, col2, col3
FROM table1
GROUP BY col1, col2, col3) AS tab1
JOIN tab2
ON tab1.col1 = tab2.col1
AND tab1.col2 = tab2.col2
GROUP BY tab1.col1, tab1.col2, tab1.col3, tab2.col3, tab2.col4
Пример данные:
Table1 Tab2
col1 | col2 | col3 col1 | col2 | col3 | col4
======================= =============================
page1 image1 referer1 page1 image1 150 75
page1 image1 referer1 page1 image1 120 85
page2 image2 referer2 page2 image2 200 400
page1 image1 referer1 page1 image1 750 1024
page2 image2 referer2 page2 image2 450 575
page1 image1 referer1 page1 image1 600 900
Ожидаемый результат:
tab1.col1 | tab1.col2 | tab1.col3 | tab2.col3 | tab2.col4
==================================================================
page1 image1 referer1 600 900
page2 image2 referer2 200 400
Здесь последней группы по возвращениям уникальных строк, но все Tab1 смещ_по_столбцы повторяют, которые я надеваю» t, и в этом случае записи изменяются только на tab2.col1 и tab2.col2. Теперь требование состоит в том, чтобы я хотел, чтобы tab1.col1, tab1.col2, tab1.col3 были уникальными, и только пара соответствующих tab2.col1 и tab2.col2 для этих столбцов из tab2. Теперь я не могу удалить tab2.col1, tab2.col2 из второй группы и применить функцию min или max aggregate, потому что в этом случае я не получу значение tab2.col1, которое отображает значение tab2.col2 для конкретной записи ,
Примечание: Я использую Amazon Redshift как DB. Подзапрос важен, поскольку на самом деле это сложный набор результатов, созданный из 3 соединений таблицы, и если я использую объединение этих трех таблиц непосредственно с tab2, тогда запрос выполняется вечно. Для простоты этого вопроса предположим, что подзапрос возвращает col1, col2, col3 из таблицы1. Tab2 и tab1 являются ginormous tables: D ... подзапрос улучшает производительность значительно (сокращение 20mins до ~ 2mins).
нет ничего сложного в вашем подзапрос. и сам запрос выглядит очень неясным. попробуйте установить sqlfiddle и объяснить свою цель с помощью некоторого набора данных и ожидаемого результата, который вам нужен. – Alex
Пожалуйста, прочитайте [** How-to-Ask **] (http://stackoverflow.com/help/how-to-ask) \t \t И вот отличное место для [** START **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/), чтобы узнать, как улучшить качество вопроса и получить лучшие ответы. –
Подзапрос - это просто 'SELECT distinct col1, col2, col3' –