问题描述
在 Hsql 中使用 WHERE 语句时遇到问题。当我按如下方式输入代码时,我没有收到任何错误:
"SELECT Year,ProjectName,(cast(sum(Missed) as float)/(select cast(sum(d.Missed) as float) from Draft d)) as MissedPer from Draft group by ProjectName,Year order by ProjectName"
"SELECT Year,(cast(sum(Missed) as float)/(select cast(sum(d.Missed) as float) from Draft d where Year = '19.12')) as MissedPer from Draft group by ProjectName,Year order by ProjectName"
错误如下:
线程“main”中的异常java.sql.sqlSyntaxErrorException:表达式不在聚合或GROUP BY列中:CAST((SUM(PUBLIC.DRAFT.MISSED)) AS DOUBLE)/(()) in statement [SELECT BranchNo,(cast(sum(Missed) as float)/(select cast(sum(d.Missed) as float) from Draft d where d.BranchNo = '19.12')) as MissedPer from Draft group by ProjectName,BranchNo order by项目名称]
我不知道如何进行这项工作,请帮忙。
解决方法
我检查了 HSQLDB 2.5.1 版,查询返回结果:
create table draft (year varchar(10),projectname varchar (10),missed int);
insert into draft values '19.10','p alpha',10
insert into draft values '19.11',12
insert into draft values '19.12',3
YEAR PROJECTNAME MISSEDPER
----- ----------- ------------------
19.10 p alpha 3.3333333333333335
19.11 p alpha 4.0
19.12 p alpha 1.0