由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Database版 - 做SQL题目,心脏病险些发作
相关主题
question: copy first N rows from table B to table A (DB2)数据库问题求解
Need help to calculate continous enrollmentHow to use the SQL key word EXISTS?
真服了老印[转载] what's wrong with this PL/SQL
oracle和XMLhelp about SQL for ACCESS
How to query a tree[转载] 问个SQL问题
Stored Procedure?pls help me in this Sql query
SQL question请问一个SQL语句的优化问题
ADO & DAO &SQL...Help...Help about a SQL statement
相关话题的讨论汇总
话题: select话题: continent话题: world话题: where话题: population
进入Database版参与讨论
1 (共1页)
b***i
发帖数: 3043
1
题目是sqlzoo.net的 4 Select within Select的第八题, 列出所有比本洲其他国家人
口多三倍以上的国家和所在洲。
终于做出来,用了4个select, 两次join, 但是有必要这么麻烦吗?
我的思路是,先选出来每个洲的最多人口,然后把这些洲的有多于最大人口1/3的国家
所在洲列出来,
然后再列出来不在上述表中的洲,和最大人口
最后把该国家和洲列出来。
做了一天,险些心脏病发作,幸亏今天踢了足球。
b********9
发帖数: 159
2
oh don't be dramatic :-) consider using cte.

【在 b***i 的大作中提到】
: 题目是sqlzoo.net的 4 Select within Select的第八题, 列出所有比本洲其他国家人
: 口多三倍以上的国家和所在洲。
: 终于做出来,用了4个select, 两次join, 但是有必要这么麻烦吗?
: 我的思路是,先选出来每个洲的最多人口,然后把这些洲的有多于最大人口1/3的国家
: 所在洲列出来,
: 然后再列出来不在上述表中的洲,和最大人口
: 最后把该国家和洲列出来。
: 做了一天,险些心脏病发作,幸亏今天踢了足球。

B*****g
发帖数: 34098
3
你想的太多了,一个简单的not exsits全解决
select name,continent
from world a
where population is not null
and not exists (select *
from world b
where b.continent = a.continent
and b.name != a.name
and 3*b.population > a.population)

【在 b***i 的大作中提到】
: 题目是sqlzoo.net的 4 Select within Select的第八题, 列出所有比本洲其他国家人
: 口多三倍以上的国家和所在洲。
: 终于做出来,用了4个select, 两次join, 但是有必要这么麻烦吗?
: 我的思路是,先选出来每个洲的最多人口,然后把这些洲的有多于最大人口1/3的国家
: 所在洲列出来,
: 然后再列出来不在上述表中的洲,和最大人口
: 最后把该国家和洲列出来。
: 做了一天,险些心脏病发作,幸亏今天踢了足球。

s**********o
发帖数: 14359
4
不用SELECT *, SELECT TOP 11即可

【在 B*****g 的大作中提到】
: 你想的太多了,一个简单的not exsits全解决
: select name,continent
: from world a
: where population is not null
: and not exists (select *
: from world b
: where b.continent = a.continent
: and b.name != a.name
: and 3*b.population > a.population)

B*****g
发帖数: 34098
5
要用标准西口好吧。oracle里,select啥效率结果都一样

【在 s**********o 的大作中提到】
: 不用SELECT *, SELECT TOP 11即可
b***i
发帖数: 3043
6
数据库不是我的茶,有点FP的感觉

【在 B*****g 的大作中提到】
: 你想的太多了,一个简单的not exsits全解决
: select name,continent
: from world a
: where population is not null
: and not exists (select *
: from world b
: where b.continent = a.continent
: and b.name != a.name
: and 3*b.population > a.population)

a*********0
发帖数: 41
7
select name, continent from world w1
where population/3 >= all
(select population from world w2
where w1.continent = w2.continent
and w1.name <> w2.name)
子查询基本就是找同continent的max
1 (共1页)
进入Database版参与讨论
相关主题
Help about a SQL statementHow to query a tree
ask for help with a simple query!!!Stored Procedure?
Re: 诚心请教 (SQL) => Try This Please:SQL question
one question on SQLADO & DAO &SQL...Help...
question: copy first N rows from table B to table A (DB2)数据库问题求解
Need help to calculate continous enrollmentHow to use the SQL key word EXISTS?
真服了老印[转载] what's wrong with this PL/SQL
oracle和XMLhelp about SQL for ACCESS
相关话题的讨论汇总
话题: select话题: continent话题: world话题: where话题: population