SQL查询总数的多个和

时间:2018-10-02 08:39:33

标签: mysql sql

我需要结合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 :(得分:1)

  • 您可以通过使用SUM(hours)计算总和,然后使用COUNT(DISTINCT ...)将其除以组中的唯一身份用户总数来计算平均值。

尝试以下操作:

SELECT SUM(h.hours) / COUNT(DISTINCT h.USER_ID) AS daily_average 
FROM hours AS h
WHERE h.date = CURDATE()