Как вернуть только самую раннюю дату для каждого пользователя (у пользователей есть 100 дат)

#sql #google-bigquery #greatest-n-per-group

#sql #google-bigquery #наибольшее число на группу

Вопрос:

Я читал часами, но ничего не добился, поэтому мне было интересно, могу ли я получить небольшую помощь. Вот моя проблема, которая должна быть простой для экспертов (проблема в том, что я полный новичок)

введите описание изображения здесь

Я хотел бы записывать только каждого уникального пользователя и их самое раннее время, вот так:

введите описание изображения здесь

Есть мысли? Чем проще запрос, тем лучше. Спасибо!

Комментарии:

1. Какую СУБД вы используете (например, oracle или MS-SQL-Server)?

2. ГРУППИРОВАТЬ ПО, в сочетании с MIN() .

3. Привет. Все, что я знаю, это то, что я использую Google Big Query. Это отвечает тому, что вам нужно знать?

4. Любая СУБД обладает этой функциональностью.

5. Но как мне написать или объединить формулы? Я знаю, что звучу довольно глупо

Ответ №1:

Вы могли бы использовать простой GROUP BY с MIN :

 SELECT Username, MIN(Datecolumn) As Datecolumn
FROM dbo.TableName
GROUP BY Username
  

Комментарии:

1. Вау. Спасибо, Тим! Ты крут! И последнее, может ли кто-нибудь порекомендовать хорошую книгу или какой-либо ресурс для изучения SQL? Я читал неделями, но нашел довольно простые вещи. Большое вам всем спасибо!

2. @mikewinston: я в основном учился, выполняя (и отвечая на вопросы по SO), но, похоже, все в порядке: sqlcourse.com