任何人都可以告诉我如何使用MIN和MAX以及UNION关键字从表格中选择最小值和最大值。
我试图使用:
SELECT ename, MIN(sal)
FROM emp
UNION
SELECT ename, MAX(sal)
FROM emp;
但它只显示MIN的相同名称,如:
smith | 800
smith | 5000
需要:
smith | 800
king | 5000
答案 0 :(得分:3)
怎么样:
SELECT ename, sal
FROM emp
ORDER BY sal ASC
LIMIT 1
UNION
SELECT ename, sal
FROM emp
ORDER BY sal DESC
LIMIT 1
答案 1 :(得分:3)
SELECT ename, sal
FROM EMP
WHERE sal = (SELECT MIN(sal) FROM EMP)
UNION
SELECT ename, sal
FROM EMP
WHERE sal = (SELECT MAX(sal) FROM EMP)
答案 2 :(得分:1)
试试这个
select Name as Lowest,amt as salary
from emp
join (select min(sal) as amt from emp) x on x.amt=emp.sal
union all
select Name ,amt as salary
from emp
join (select max(sal) as amt from emp) x on x.amt=emp.sal
答案 3 :(得分:1)
实际上没有测试它,但这个一般的想法应该有效:
SELECT ename, sal FROM emp WHERE sal = (SELECT MIN(sal) FROM emp)
UNION
SELECT ename, sal FROM emp WHERE sal = (SELECT MAX(sal) FROM emp)
请注意,如果有多个行具有(相同)MIN或MAX值,则返回的行数可能超过2行。如果MIN和MAX恰好来自同一行,它也可能只返回一行(你可以使用UNION ALL来避免这种情况)。
BTW,您的查询意味着:获取MIN(sal),然后从随机行获取ename
(对MAX而言相同)。 In在MIN和MAX情况下,MySQL决定返回相同的随机行。
但是,在MySQL以外的大多数数据库中,你甚至可能没有这种“随机”查询 - 你需要在GROUP BY中加入ename
。
答案 4 :(得分:0)
如果您正在寻找具有最小值的员工姓名,那么您的查询是:
选择所有员工最少的员工姓名:
Select name, sal from employees where sal =
(select min(sal) from employees)
您可以将此查询与另一个查询结合以获得最大值
好好看看你的oracle homeworks。
答案 5 :(得分:0)
select Name, LifeExpectancy from (
(select * from(
SELECT Name, LifeExpectancy FROM country where LifeExpectancy > 0 ORDER BY LifeExpectancy ASC LIMIT 1
)a)
union
(select * from(
SELECT Name, LifeExpectancy FROM country where LifeExpectancy > 0 ORDER BY LifeExpectancy desc LIMIT 1
)b)
)c
结果:
+---------+----------------+ | Name | LifeExpectancy | +---------+----------------+ | Zambia | 37.2 | | Andorra | 83.5 | +---------+----------------+
答案 6 :(得分:-1)
选择姓名,不提供薪水的雇员的最高薪水(选择雇员的最高薪水);
o / p:-允许65000 例如o / p:madhu 6500
答案: 选择姓名,薪水=的员工的薪水=(薪水不在的员工选择最高薪水(员工的薪水选择max(薪水))); o / p:madhu 6500