Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL计数全部超出限制_Mysql - Fatal编程技术网

MySQL计数全部超出限制

MySQL计数全部超出限制,mysql,Mysql,我有一个MySQL查询,它统计了前五名客户的工作时间。这很好,我正在将数据绘制在图表上。我试图实现的是查询中的一个计算,它返回第六个结果集,这是所有不在前五名的小时数的总和。i、 e.一个“其他”结果,以便所有6个结果的总和等于项目的总和。小时 我的问题是: SELECT SUM(projects.hours) AS total_hours FROM projects GROUP BY projects.companyID ORDER BY total_hours DESC LIMIT 5

我有一个MySQL查询,它统计了前五名客户的工作时间。这很好,我正在将数据绘制在图表上。我试图实现的是查询中的一个计算,它返回第六个结果集,这是所有不在前五名的小时数的总和。i、 e.一个“其他”结果,以便所有6个结果的总和等于项目的总和。小时

我的问题是:

SELECT
  SUM(projects.hours) AS total_hours
FROM projects
GROUP BY projects.companyID
ORDER BY total_hours DESC
LIMIT 5

从应用程序中的所有小时数中减去总小时数。

这两种方法的组合如何,再加上一个汇总,我们就不需要在

(我不确定您是否可以使用
限制
汇总
,但是,我这里没有MYSQL,因此无法测试,抱歉)

注意:我希望它返回一个包含其他行总数的NULL公司id

SELECT companyID, 
CASE WHEN companyID IS NULL THEN 
    sum(Total_hours)
ELSE
    sum(Total_hours) * -1
END

FROM 
(           
    SELECT companyID,SUM(projects.hours) AS total_hours,  
    FROM  projects 
    GROUP BY  projects.companyID 
    ORDER BY total_hours DESC WITH ROLLUP LIMIT 5 
    UNION ALL
    SELECT null,SUM(projects.hours)*-1 total_hours FROM projects  
)
GROUP BY companyID

明亮的非常感谢。只是一个简单的问题,'1 no'和'2 no'位做什么?@Joseph,If允许您知道哪些行来自查询的第一部分,哪些行来自查询的第二部分。@Johan,还有一件额外的事情。我还为前5个项目中的每个项目选择projects.company\u名称。对于第二个查询,我如何将其设置为“Other”呢?另外,我刚刚尝试运行此命令,但出现了以下错误:“此版本的MySQL还不支持‘LIMIT&IN/ALL/ANY/SOME子查询’”。升级MySQL不是一个选项。我正在运行5.0版。32@Johan:它现在可以与编辑一起工作。由于
中的
,它可能会很慢,不过,您是对的。简单而直接的方法是+1。为了使它稍微不那么简单和直接,您可以将
total_hours
all_hours
分配给用户定义的变量,并在SQL语句中执行减法。
SELECT
SUM(projects.hours) AS total_hours,
(SELECT SUM(projects.hours) FROM projects) AS all_hours
FROM 
projects
GROUP BY 
projects.companyID
ORDER BY total_hours DESC
LIMIT 5
SELECT companyID, 
CASE WHEN companyID IS NULL THEN 
    sum(Total_hours)
ELSE
    sum(Total_hours) * -1
END

FROM 
(           
    SELECT companyID,SUM(projects.hours) AS total_hours,  
    FROM  projects 
    GROUP BY  projects.companyID 
    ORDER BY total_hours DESC WITH ROLLUP LIMIT 5 
    UNION ALL
    SELECT null,SUM(projects.hours)*-1 total_hours FROM projects  
)
GROUP BY companyID