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