我开始学习SQL所以我需要做一些练习。其中一个练习我只是无法找到如何做到这一点。 我们有一个包含4个表的数据库。在这个练习中就像: 显示Almelo人员雇佣的滑板车的品牌和类型的概述,住在一个2号门的随意街道。额外的条件是支付的总金额应该超过100欧元。还显示合同总金额。
我已经尝试了很多,几乎得到了它。但现在我每次都会得到这个错误(见标题)
这是我的疑问:
SELECT merk, type, SUM(betaald_bedrag)
FROM T_contract
INNER JOIN T_klant ON T_contract.klantnummer = T_klant.klantnummer
INNER JOIN T_betaling ON T_contract.contractnummer = T_betaling.contractnummer
WHERE plaats = "Almelo"
AND adres LIKE "% 2"
HAVING SUM(betaald_bedrag) > 100
GROUP BY T_betaling.contractnummer
你能帮我解决这个问题吗?
答案 0 :(得分:1)
SELECT merk, type, SUM(betaald_bedrag)
FROM T_contract
INNER JOIN T_klant ON T_contract.klantnummer = T_klant.klantnummer
INNER JOIN T_betaling ON T_contract.contractnummer = T_betaling.contractnummer
WHERE plaats = "Almelo"
AND adres LIKE "% 2"
GROUP BY T_betaling.contractnummer
HAVING SUM(betaald_bedrag) > 100
答案 1 :(得分:1)
您的查询应如下所示:
SELECT merk, type, SUM(betaald_bedrag)
FROM T_contract INNER JOIN
T_klant
ON T_contract.klantnummer = T_klant.klantnummer INNER JOIN
T_betaling
ON T_contract.contractnummer = T_betaling.contractnummer
WHERE plaats = 'Almelo' AND
adres LIKE '% 2'
GROUP BY merk, type
HAVING SUM(betaald_bedrag) > 100;
格式化(我认为这很重要):
HAVING
子句位于GROUP BY
之后。SELECT
中的未聚合列进行聚合。 SELECT
某些列是一个非常糟糕的习惯,但是由其他列聚合。