mysql - 'generated' 列上的 SQL SUM

标签 mysql sql select sum

我的任务是统计每个员工的缺勤总天数。

我编写了以下查询

SELECT name
    ,surname
    ,absentdays
FROM (
    SELECT name
        ,surname
        ,DATEDIFF("d", fromdate, todate) AS absentdays
    FROM DiseaseReport D
        , Employees E
    WHERE E.number = D.empnumber
    )

虽然这个查询工作得很好,但它没有给我每个员工的“总”缺勤天数。相反,我为每个员工获得更多行(如果适用)。

我尝试应用 SUM(absentdays) 或 GROUP BY 'name',但我猜这些不是选项,因为生成了 'absentdays' 列。

你们能给我一个替代解决方案来应对这个“挑战”吗?

最佳答案

将函数(在您的例子中,sum)应用于“生成”列没有任何问题:

SELECT   name,
         surname,
         SUM(absentdays) AS total_absent_days
FROM     (SELECT name, 
                 surname,
                 DATEDIFF("d", fromdate, todate) AS absentdays
          FROM   DiseaseReport D, Employees E
          WHERE  E.number = D.empnumber
         )
GROUP BY name, surname

关于mysql - 'generated' 列上的 SQL SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23566152/

相关文章:

mysql - JPA 实体未保存在数据库中

mysql - 嵌入式类中的 @OneToMany 和 @ManyToMany 如何工作?

使用 LAST_INSERT_ID() 在多个表上批量插入 MySQL

php - 查询在本地机器上工作正常,但在服务器上失败

mysql - PHP/MySQL 多对多。如何?

sql - 在不存在的地方插入值

sql - 使用 cloud-spanner 进行本地开发

select - 在 CQL Cassandra 中查找非主键列的不同值

php - 如何使用组合框(选择)值重新加载页面?

php - 带有 LIKE、通配符和前导零的 MySQL SELECT