2016-11-22 3 views
-3

Пожалуйста, помогите мне с запросом Ниже приведены таблицы и требование деталиPostgreSQL запрос

enter image description here

+2

Пожалуйста уточните, хотите ли вы решение для MySQL или для PostgreSQL. Вы отметили вопрос с обоими продуктами, но решения для каждого могут быть разными. Заголовок вопроса говорит «postgresql query», но зачем тогда помечать вопрос MySQL? –

+2

Опубликуйте свой код, а не фотографии вашего кода. – WillardSolutions

+0

https://stackoverflow.com/help/how-to-ask –

ответ

1

Вы должны использовать оконных функций

select alph_letter, alph_group, min(alph_date) OVER (PARTITION BY alph_group) AS min_date from alphabets; 
+0

Спасибо за быстрое решение –

1

Вы могли бы использовать вариант кадрирования из min:

SELECT letter, group, MIN(date) OVER (PARTITION BY group) 
FROM alphabets 
1

Вот еще один способ сделать это :). Я использовал SQL Server, но синтаксис должен быть похож на эту проблему:

SAMPLE DATA:

IF OBJECT_ID('tempdb..#Alphabets') IS NOT NULL 
    DROP TABLE #Alphabets; 

CREATE TABLE #Alphabets(Letter VARCHAR(1) 
        , Groups VARCHAR(3) 
        , Dates DATE); 

INSERT INTO #Alphabets 
VALUES 
     ('A' 
    , 'abc' 
    , '20161026'), 
     ('B' 
    , 'abc' 
    , '20161027'), 
     ('C' 
    , 'abc' 
    , '20161028'), 
     ('D' 
    , 'def' 
    , '20161101'), 
     ('E' 
    , 'def' 
    , '20161030'); 

ЗАПРОСА:

SELECT B.Letter 
    , B.Groups 
    , MinDates 
FROM 
     (SELECT MIN(Dates) AS MinDates 
      , Groups 
     FROM #Alphabets 
     GROUP BY Groups) AS A 
     INNER JOIN #Alphabets AS B ON A.Groups = B.Groups; 

РЕЗУЛЬТАТЫ:

enter image description here

Смежные вопросы