Как создать новую таблицу SQL с Mean, Median и Mode? - PullRequest
0 голосов
/ 22 октября 2018

Хорошо, я новичок в SQL, поэтому задаю этот вопрос.

У меня есть таблица с именем: kpi_notification_metrics_per_month В этой таблице 2 столбца:

  • Дата
  • NotificationCount

Я хочу создать новую таблицу, в которой будет отображаться

  • Среднее
  • Медиана
  • Режим

Для столбца NotificationCount.

Пример таблицы:

Date    NotificationCount
01/04/2018 00:00    0
31/03/2018 00:00    0
25/03/2018 00:00    0
24/03/2018 00:00    0
22/03/2018 00:00    0
18/03/2018 00:00    0
17/03/2018 00:00    0
14/03/2018 00:00    0
11/03/2018 00:00    0
07/04/2018 00:00    1
26/03/2018 00:00    1
21/03/2018 00:00    1
15/03/2018 00:00    1
13/03/2018 00:00    1
12/03/2018 00:00    1
10/03/2018 00:00    1
08/04/2018 00:00    2
30/03/2018 00:00    2
09/03/2018 00:00    2
08/03/2018 00:00    2
20/03/2018 00:00    3
19/03/2018 00:00    4
02/04/2018 00:00    9
23/03/2018 00:00    11
27/03/2018 00:00    22
03/04/2018 00:00    28
28/03/2018 00:00    34
04/04/2018 00:00    39
05/04/2018 00:00    43
29/03/2018 00:00    47
06/04/2018 00:00    50
16/03/2018 00:00    140

Ожидаемые результаты:

Mean    Median  Mode
13.90625    1   0

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Вот как это сделать в Oracle:

select
  avg(notificationcount) as statistic_mean,
  median(notificationcount) as statistic_median,
  stats_mode(notificationcount) as statistic_mode
from mytable;

Нет необходимости в другой таблице.Вы можете (и должны) всегда запрашивать данные ad hoc.Для удобства вы можете создать представление, как предложил jarlh в комментариях к запросу.

0 голосов
/ 22 октября 2018

Среднее значение: Использовать Avg()

Select Avg(NotificationCount)
From   kpi_notification_metrics_per_month

Медиана: упорядочить по ASC и DESC для TOP 50 Percent данных, найти среднее.

Select ((
        Select Top 1 NotificationCount
        From   (
                Select  Top 50 Percent NotificationCount
                From    kpi_notification_metrics_per_month
                Where   NotificationCount Is NOT NULL
                Order By NotificationCount
                ) As A
        Order By NotificationCountDESC) + 
        (
        Select Top 1 NotificationCount
        From   (
                Select  Top 50 Percent NotificationCount
                From    kpi_notification_metrics_per_month
                Where   NotificationCount Is NOT NULL
                Order By NotificationCount DESC
                ) As A
        Order By NotificationCount Asc)) / 2

Режим: Получить счетчикикаждого набора значений и получить верхнюю 1 строку в порядке DESC.

SELECT TOP 1 with ties NotificationCount
FROM   kpi_notification_metrics_per_month
WHERE  NotificationCount IS Not NULL
GROUP  BY NotificationCount
ORDER  BY COUNT(*) DESC

Все работает в Sql Server 2014.

Ссылка: http://blogs.lessthandot.com/index.php/datamgmt/datadesign/calculating-mean-median-and-mode-with-sq/

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