【问题标题】:Using sum() function of mySQL query with left outer join使用带有左外连接的 mySQL 查询的 sum() 函数
【发布时间】:2018-03-14 09:29:05
【问题描述】:

我有三个表,分别命名为 Table1、Table2、Table3。表 1 有三列。它们是 studentId、studentName、taskName。表 2 有两个列作为 ID 和学生姓名。表 2 包括没有参加某个模块的学生的姓名。表 3 包含两列,将每个任务分配给主管。一个主管可以分配多个任务。在这里,我使用以下查询来计算每个主管的任务数:

SELECT Table3.supervisor, COUNT(*) as Total FROM issues LEFT OUTER JOIN
Table2 ON Table1.studentName=Table2.studentName LEFT OUTER JOIN Table3 ON
Table1.taskName=Table3.taskName WHERE Table2.userId is null GROUP BY Table3.supervior

谁能帮忙写一个查询来查找分配给参加某个模块的学生的任务总数?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    我整理好了。 答案是:

    SELECT SUM(Total) FROM (
    SELECT Table3.supervisor, COUNT(*) as Total FROM issues LEFT OUTER JOIN
    Table2 ON Table1.studentName=Table2.studentName LEFT OUTER JOIN Table3 ON
    Table1.taskName=Table3.taskName WHERE Table2.userId is null GROUP BY Table3.supervior) as summation
    

    【讨论】:

    • 您不妨删除GROUP BY Table3.supervior(和select 中的Table3.supervisor)。附带问题:谁设计了table2?如果是你的老师,我希望他有理由;此外,它可能是一些观点。但是如果你是这样设计的,你应该重新考虑一下:通过没有table2 中的条目来存储学生将参与模块的信息是没有意义的。试想一下,如果您想为大学增加一名新生(没有任何模块),您需要付出多少努力。您需要将他添加到 table2 中(以及其他模块的类似表)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    相关资源
    最近更新 更多