SQL Query несколько сумм и средняя сумма - PullRequest
0 голосов
/ 02 октября 2018

Мне нужна помощь с комбинированной функцией SUM и AVG.

В настоящее время у меня есть система отслеживания времени, в которой моя база данных 'hour' выглядит следующим образом:

#USER_ID #HOURS #DATE
1        2      2018-01-01
1        1      2018-01-01
2        5      2018-01-01
1        3      2018-01-02
2        8      2018-01-02
2        1      2018-01-02

Что яХотелось бы получить в выводе следующее:

Среднее количество часов за сегодня (2018-01-01): 4 ЧАСА

Что я мог бы сделать так:

SELECT AVG(hours)
FROM hour h
WHERE h.date = CURDATE()

Но это даст мне еще один вывод, который я хочу, поскольку в моем примере USER_ID 1 имеет два входа, 2 часа + 1 час.Вот так ..

2 + 1 + 5 AVG: 2,666666667

3 + 5 AVG: 4

Итак, мой запрос должен содержать сумму для каждого пользователя, а затем получить среднее значение.Как я мог сделать что-то подобное?

С уважением!

1 Ответ

0 голосов
/ 02 октября 2018
  • Вы можете рассчитать среднее значение, рассчитав общую сумму, используя SUM(hours), а затем разделив ее на общее количество уникальных пользователей в группе, используя COUNT(DISTINCT ...).

Попробуйте следующее:

SELECT SUM(h.hours) / COUNT(DISTINCT h.USER_ID) AS daily_average 
FROM hours AS h
WHERE h.date = CURDATE()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...