Поиск самой старой записи, самой новой записи и общего количества записей для конкретного пользователя c? - PullRequest
0 голосов
/ 11 марта 2020

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

  • дату самой старой решенной задачи
  • дату самой последней решенной задачи
  • общее количество решенных задач
    user  | resolved date | task 
    -------------------------------------
    jim   | 20190103      | a 
    jim   | 20160117      | b
    james | 20191001      | c
    holly | 20190203      | d
    john  | 20180301      | e 
    john  | 20190401      | f
    holly | 20180101      | g
    james | 20191212      | h 
    james | 20191107      | i

Я хочу увидеть результат, как показано ниже:

user  | oldestdate | mostrecentdate | totaltasks
------------------------------------------------
jim   | 2016117    | 20190103       | 2     
james | 20191001   | 20191212       | 3 
holly | 20180101   | 20190203       | 2 
john  | 20180301   | 20190401       | 2 

Кроме того, как бы я ограничил его для подсчета только для задач на общую сумму> 50?

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Просто используйте агрегацию:

select 
    user,
    min(resolved_date) oldest_date,
    max(resolved_date) most_recent_date,
    count(*) total_tasks
from mytable
group by user
0 голосов
/ 11 марта 2020

Просто объедините свои строки, используя функции min, max, count вместе с предложением group by:

select [user]
    , min([resolved date]) oldestdate
    , max([resolved date]) mostrecentdate
    , count(*) totaltasks
from MyTable
group by [user];

Чтобы ответить на дополнительный вопрос, показать результаты при выполнении задачи итого больше 50, используйте предложение having, например

select [user]
    , min([resolved date]) oldestdate
    , max([resolved date]) mostrecentdate
    , count(*) totaltasks
from MyTable
group by [user]
having count(*) > 50;
...