Средние значения в том же столбце при определенных условиях (SQL Сервер) - PullRequest
0 голосов
/ 20 марта 2020

Поэтому я пытаюсь найти среднее время на SQL серверной таблице, но только для определенных записей, где идентификатор дублируется с примером, как показано.

|---------------------|------------------|------------------|
|          ID         |     Status       |     Date         |
|---------------------|------------------|------------------| 
|          aa         |       11         |     2020-01-01   |
|---------------------|------------------|------------------|
|          aa         |       22         |     2020-02-01   |
|---------------------|------------------|------------------| 
|          bb         |         11       |     2020-01-01   |
|---------------------|------------------|------------------|

По существу, для всех записей с дубликат идентификатора, найдите среднее время, которое требуется для этого идентификатора до go с 11 до 22 статуса.

Заранее спасибо.

1 Ответ

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

Вы можете использовать агрегацию:

select 
    id,
    datediff(
        day, 
        min(case when status = 11 then date end),
        max(case when status = 22 then date end)
    ) diff
from mytable
where status in (11, 22)
group by id
having min(status) <> max(status)

Это дает вам одну строку для каждого id, имеющего статусы 11 и 22, с разницей в днях между датой статуса 11 и дата статуса 22. Если есть несколько строк со статусом 11 или 22, мы выбираем самый ранний 11 и самый последний 22.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...