我需要结合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
因此,我的查询应该需要每个用户的总和,然后才能得出平均值。 我该怎么做?
最诚挚的问候!
答案 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()