SQL Первое и последнее вхождения - группировка Вынудив меня сгруппировать все в выбранном - PullRequest
0 голосов
/ 20 февраля 2020

Таблица1

EmployeeID | StartDateTimestamp | CohortID | CohortName
---------- | ------------------ | -------- | ----------
1          | 20080101 01:30:00  | 1        | Peanut
1          | 20090204 01:01:00  | 2        | Apple
2          | 20190107 05:52:14  | 1        | Peanut
3          | 20190311 02:35:26  | 2        | Apple

Сотрудник

EmployeeID | HireStartName | StartDateTimestamp2
---------- | ------------- | -------------------
1          | HiredStart    | 20080501 01:30:00
1          | DeferredStart | 20090604 01:01:00
2          | HiredStart    | 20190115 05:52:14
3          | HiredStart    | 20190330 02:35:26

Обучение по go. В моем запросе ниже будут перечислены все идентификаторы EmployeeID, а не только первый идентификатор когорты и последний идентификатор когорты. Группировка заставляет меня сгруппировать StartDateTimestamp2 с employeeid, и он по-прежнему перечисляет все идентификаторы сотрудников, и не выглядит как ожидаемый результат ниже.

В идеале, (в первом случае) результат должен быть:

CohortID | StartDateTimestamp2
-------- | -------------------
1        | 20080501 01:30:00
2        | 20190115 05:52:14

Мой запрос ниже

SELECT firsttable.Cohortid,
       employeetable.StartDateTimestamp2
FROM   Table1 firsttable
INNER JOIN Employee employeetable ON employeetable.employeeid = firsttable.employeeid

Фактический вопрос: Используйте первый экземпляр CohortName, чтобы определить дату начала каждой когорты

Результат:

Cohort ID | StartDateTimesstamp2

1 Ответ

1 голос
/ 20 февраля 2020

Для этого набора данных это должно сделать простое агрегирование:

select cohortID, min(StartDateTimestamp) StartDateTimestamp2
from table1
group by cohortID

Или, возможно:

select 
    t.cohortid, 
    min(e.startdatetimestamp2) startdatetimestamp2 
from table1 t
inner join employee e on e.employeeid = t.employeeid
group by t.cohort_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...