#sql
#sql
Вопрос:
У меня есть таблица со столбцами идентификатор проекта, название проекта, период и статус.
Мне нужна только уникальная строка с идентификатором проекта с наименьшим / минимальным периодом.
Project ID | Project name | Period | Status
-----------------------------------------------
1234877 | abc |01-01-2020| Closed
-------------------------------------------------
34277822 | bcd |01-01-2020| Closed
-------------------------------------------------
34277822 | bcd |01-02-2020| Closed
-------------------------------------------------
34277822 | bcd |01-03-2020| Closed
-------------------------------------------------
34277822 | bcd |01-04-2020| Closed
-------------------------------------------------
66277261 | efg |01-01-2020| Closed
-------------------------------------------------
4526373 | hij |01-07-2020| Closed
--------------------------------------------------
234532 | jkl |01-02-2020| Closed
--------------------------------------------------
234532 | jkl |01-03-2020| Closed
--------------------------------------------------
526263 | mno |01-01-2020| Closed
----------------------------------------------------
8282827 | pqr |01-01-2020| Closed
----------------------------------------------------
212333 | stu |01-07-2020| Closed
----------------------------------------------------
8977552 | vwx |01-01-2020| Closed
----------------------------------------------------
8977552 | vwx |01-02-2020| Closed
-----------------------------------------------------
8977552 | vwx |01-03-2020| Closed
------------------------------------------------------
8977552 | vwx |01-04-2020| Closed
-------------------------------------------------------
8977552 | vwx |01-05-2020| Closed
-------------------------------------------------------
Вывод, который я хочу, это
Project ID | Project name | Period | Status
-----------------------------------------------
1234877 | abc |01-01-2020| Closed
-------------------------------------------------
34277822 | bcd |01-01-2020| Closed
-------------------------------------------------
66277261 | efg |01-01-2020| Closed
-------------------------------------------------
4526373 | hij |01-07-2020| Closed
--------------------------------------------------
234532 | jkl |01-02-2020| Closed
--------------------------------------------------
526263 | mno |01-01-2020| Closed
----------------------------------------------------
8282827 | pqr |01-01-2020| Closed
----------------------------------------------------
212333 | stu |01-07-2020| Closed
----------------------------------------------------
8977552 | vwx |01-01-2020| Closed
----------------------------------------------------
Комментарии:
1. Пометьте свой вопрос базой данных, которую вы используете.
Ответ №1:
Простой метод использует коррелированный подзапрос:
select t.*
from t
where t.period = (select min(t2.period)
from t t2
where t2.project_id = t.project_id
);
С индексом на (project_id, period)
это часто имеет наилучшую производительность во многих базах данных.