select中没有聚合的子句

时间:2014-09-01 19:15:48

标签: sql

与此问题类似:NOT IN vs IN Do Not Return Complimentary Results

基本上我试图回答这个问题:查找属于所有人口少于2500万的大陆的每个国家。显示名称,大陆和人口。

此处的数字7包含所有表格详细信息:http://sqlzoo.net/wiki/SELECT_within_SELECT_Tutorial

这个查询有效:它有效地占据了一个没有国家的大陆所有国家的流行音大于25毫米

SELECT name, continent, population 
FROM world x  
WHERE continent NOT IN(SELECT DISTINCT continent FROM world
WHERE population >= 25000000)

此查询不起作用。我试图使用select语句中没有聚合函数。这是允许的吗?目前我的子查询没有返回任何结果,所以我显然在某处错了。

SELECT name, continent, population 
FROM world x  
WHERE continent in (SELECT  continent FROM world
having max(population) < 25000000)

2 个答案:

答案 0 :(得分:0)

想出来,谢谢@Michael Berkowsiki在上面评论中的提示。

SELECT name, continent, population 
FROM world x  
WHERE continent in (SELECT  continent FROM world
group by continent
having max(population) < 25000000)

答案 1 :(得分:0)

&#34;必须在GROUP BY子句中引用SELECT语句中引用的每一列,除非该列是SELECT子句中包含的聚合函数的参数。&#34; (&#34;现代数据库管理&#34;第10版,Jefferey A. Hoffer,第276页)

所以在这种情况下,我相信你的答案需要修改为:

from lxml import html
tree = html.fromstring(response.text)
top_creations_symbol_list = tree.xpath('//xpath/to/creation/symbols')
top_redemptions_symbol_list = tree.xpath('//xpath/to/redemption/symbols')