SELECT CASE schuleArtID WHEN 1 THEN SUM(schuleSummeSchueler) / 8 WHEN 2 THEN SUM(schuleSummeSchueler) / 6 * 0.8 WHEN 3 THEN SUM(schuleSummeSchueler) / 6 * 0.8 WHEN 4 THEN SUM(schuleSummeSchueler) / 5 * 0.8 WHEN 5 THEN SUM(schuleSummeSchueler) / 3 * 0.5 WHEN 6 THEN SUM(schuleSummeSchueler) / 3 * 0.8 END AS potenzial FROM sys_theorie_schule WHERE filialID = '311' GROUP BY schuleArtID
这有效,但现在我需要一笔钱,因为有多行。
SELECT SUM( CASE schuleArtID WHEN 1 THEN SUM(schuleSummeSchueler) / 8 WHEN 2 THEN SUM(schuleSummeSchueler) / 6 * 0.8 WHEN 3 THEN SUM(schuleSummeSchueler) / 6 * 0.8 WHEN 4 THEN SUM(schuleSummeSchueler) / 5 * 0.8 WHEN 5 THEN SUM(schuleSummeSchueler) / 3 * 0.5 WHEN 6 THEN SUM(schuleSummeSchueler) / 3 * 0.8 END ) AS potenzial FROM sys_theorie_schule WHERE filialID = '311' GROUP BY schuleArtID
在这里,我只得到结果[Err] 1111 - Invalid use of group function
。
这是表格的结构(对不起德国专栏名称):
CREATE TABLE `sys_theorie_schule` ( `schuleID` int(11) NOT NULL AUTO_INCREMENT, `filialID` int(11) NOT NULL, `schuleName` varchar(255) NOT NULL, `schuleStrasse` varchar(255) NOT NULL, `schulePlz` varchar(8) NOT NULL, `schuleOrt` varchar(255) NOT NULL, `schuleArtID` int(11) NOT NULL, `schuleSummeSchueler` int(11) NOT NULL, `schuleEntfernung` int(11) NOT NULL, `online` tinyint(1) NOT NULL DEFAULT '1', `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`schuleID`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8
MySQL-Version:5.0.51a-24 + lenny5
请问有人帮忙吗? 非常感谢!
答案 0 :(得分:3)
尝试:
SELECT
SUM(
CASE schuleArtID
WHEN 1 THEN schuleSummeSchueler / 8
WHEN 2 THEN schuleSummeSchueler / 6 * 0.8
WHEN 3 THEN schuleSummeSchueler / 6 * 0.8
WHEN 4 THEN schuleSummeSchueler / 5 * 0.8
WHEN 5 THEN schuleSummeSchueler / 3 * 0.5
WHEN 6 THEN schuleSummeSchueler / 3 * 0.8
END
) AS potenzial
FROM
sys_theorie_schule
WHERE
filialID = '311'
您无法对已包含总和的表达式求和,并且当您需要总计时,schuleArtID
分组是没有意义的。