我试图在PostgreSQL中执行此查询
SELECT sum(No_of_Items) AS Total,
Name FROM All_Bills_of_POS
GROUP BY Name
HAVING MAX(Total)
ORDER BY Total DESC LIMIT 1";
但是我收到了这个错误:
org.postgresql.util.PSQLException:错误:HAVING的参数必须是boolean类型,而不是double double类型
但是这个查询在SQLite中运行良好。如何在PostgreSQL中执行它?
答案 0 :(得分:3)
你的HAVING子句没有评估为布尔值。我认为你需要这样的东西:
SELECT sum(No_of_Items) AS Total, Name
FROM All_Bills_of_POS
GROUP BY Name
HAVING MAX(Total) > 1
ORDER BY Total DESC
LIMIT 1
答案 1 :(得分:2)
HAVING MAX(Total)
应该有一些条件。例如,
HAVING MAX(Total) > 100
此条件应返回布尔值,即true或false。
答案 2 :(得分:0)
实际上,由于您要检索单行,name
项目最多(sum(No_of_Items)
},因此您根本不需要HAVING
条款。放弃它:
SELECT sum(No_of_Items) AS Total, Name
FROM All_Bills_of_POS
GROUP BY Name
HAVING MAX(Total)
ORDER BY Total DESC, Name -- tiebreaker
LIMIT 1;
我还添加Name
作为额外的ORDER BY
项,以确定的方式打破关系:如果多个名称最大值匹配,则按字母顺序排在第一位。
如果您的目标是其他目的,您应该在问题中与我们分享(在任何情况下您都应该这样做)。