mysql - 总结用户小时数并得到平均值,包括尚未添加任何小时数的用户

标签 mysql sql

这是我上一个问题的后续问题: SQL Query multiple sums and avarage of total

我得到了上一个问题与 Madhur Bhaiya 的回答:

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

虽然我意识到我有一个后续问题是:

在我的小时表中,我有两个用户报告了他们的时间,但我希望它能够计算所有存在的用户的平均值。 小时数据库如下所示:

   #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

该信息在我的“用户”数据库中,如下所示:

#USER_ID #USER_NAME
1        aaa
2        bbb
3        ccc

关于如何做到这一点的任何想法?我假设我必须加入表 'hours''users'?

所需的输出将是(基于 2018-01-01):

(HIDDEN INFO: USER 1 TOTAL = 3)
(HIDDEN INFO: USER 2 TOTAL = 5)
(HIDDEN INFO: USER 3 TOTAL = 0)
**AVARAGE: 2,666666667**

最佳答案

SELECT SUM(h.hours) / COUNT(DISTINCT u.USER_ID) AS daily_average 
FROM hours AS h
RIGHT JOIN users u ON h.USER_ID = u.USER_ID
WHERE h.date = CURDATE()

您不考虑没有记录任何时间的用户的问题是他们不存在于小时表中,因此使用小时表上不同用户的计数不是您要找的。

如果加入用户表,您可以获得系统中所有用户的计数,而不是未记录小时数的用户数,这应该为您提供所有用户的平均值,而不仅仅是记录小时数的用户数。

关于mysql - 总结用户小时数并得到平均值,包括尚未添加任何小时数的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52606233/

相关文章:

mysql - dbEscapeStrings/concerto.updateState 中的错误 [协奏曲平台]

mysql - SQL 中的移动平均线

php - PDO/MySQL : Underscore ('_' ) wildcard in PHP seems escaped by default

sql - IIS 和 SQL 可以在同一个 Azure 虚拟机上运行吗?

sql - 提取字符串中的最后一个数字

SQL:将列的数据类型从字符串更改为数字

mysql - Moodle 和文件格式错误

php 和 mysql 实时提要

sql - 数据库表同义词/别名

sql - SQL Server 2008 中表格结果的分组和计数选择