Sql 韩元集团';我的陈述不起作用。为什么?

Sql 韩元集团';我的陈述不起作用。为什么?,sql,oracle,select,group-by,sum,Sql,Oracle,Select,Group By,Sum,SQL期末考试的练习题。 列出按犯罪分类收取的总金额(罚款和费用)和总金额 这是我的密码。请告诉我为什么它不工作 select classification, fine_amount+court_fee as "collections amount", fine_amount - amount_paid as "Amount owned" from crime_charges join crimes using (crime_id) group by classification; 引发错误:

SQL期末考试的练习题。 列出按犯罪分类收取的总金额(罚款和费用)和总金额

这是我的密码。请告诉我为什么它不工作

select classification, fine_amount+court_fee as "collections amount", fine_amount - amount_paid as "Amount owned"
from crime_charges join crimes using (crime_id)
group by classification;
引发错误:

ORA-00979: not a GROUP BY expression
00979. 00000 -  "not a GROUP BY expression"
*Cause:    
*Action:
Error at Line: 1 Column: 23
试试这个:

SELECT classification, SUM(fine_amount+court_fee) AS "collections amount", 
       SUM(fine_amount - amount_paid) AS "Amount owned"
FROM crime_charges 
INNER JOIN crimes USING (crime_id)
GROUP BY classification;

您必须将select子句中的所有列放入group by子句。

尝试以下查询:

select classification, fine_amount+court_fee as "collections amount", fine_amount - amount_paid as "Amount owned"
from crime_charges join crimes using (crime_id)
group by classification,fine_amount,court_fee,amount_paid;

@谢比尔,我感谢你对学习的兴趣。但是,把时间投入到理论学习上总是明智的。你的问题很基本。 使用
groupby
的select查询在select子句中只能包含聚合函数和按分组的列。 想象一下,当您已经将数据a与
分类
列分组时,数据库如何知道选择
罚款金额
列的单个值。它可以是
max
min
sum
。。等 不是我的建议,但我只是觉得,当你开始了解基本知识时,你会感觉到不同。当你在互联网上搜索解决方案时,它可能会成为一种习惯


祝你一切顺利

请在别名周围不要加引号(例如:
fine\u amount+court\u fee as collections amount
),这是oracle特有的问题。他没有使用MySQlop。OP将其标记为MySQL,而不是Oracle。这并不意味着它是MySQL。你相信你看到的每一个标签吗?ORA-00979是一个甲骨文错误,不必粗鲁。我的评论是针对发现这个问题的其他人的。鉴于OP认为它是mysql,并以这种方式对其进行了标记,因此有必要澄清您的评论是针对Oracle的,而OP实际上使用的是Oracle,而不是mysql。