最值查询方法小结
SQL中常常有应用需要找到某个项目的最大值最小值,这里给出相关查找的SQL写法的小结。
例:找到最大的账户余额
1.1 使用关系代数
Π b a l a n c e ( a c c o u n t ) − Π A 1 . b a l a n c e ( σ A 1 . b a l a n c e < A 2 . b a l a n c e ( ρ A 1 ( a c c o u n t ) × ρ A 2 ( a c c o u n t ) ) ) \Pi_{balance}(account) - \Pi_{A_1.balance}(\sigma_{A_1.balance<A_2.balance}(\rho_{A_1}(account) \times \rho_{A2}(account))) Πbalance(account)−ΠA1.balance(σA1.balance<A2.balance(ρA1(account)×ρA2(account)))
翻译上述的表达式到SQL得:
select balance
from account
except
(select A1.balance
from account A1, account A2
where A1.balance < A2.balance);
1.2 使用集合操作
(1)except
select balance
from account
except
(select A1.balance
from account A1, account A2
where A1.balance < A2.balance);
1.3 使用嵌套子查询
(1)all
关键字
select balance
from account A
where A.account >= all(select balance
from account A2);
(2)exists
关键字
select balance
from account A1
where not exists(select balance from account A2
where A1.balace < A2.balance);
1.4 聚集函数
select max(balance)
from account;