select查询例子总结

1、求每个部门的平均薪水
select avg(salary) from emp group by deptno;
2、求薪水最高的人的名字
select ename from emp where sal=
( select max(sal) from emp);

3、查询工资大于1200雇员,按部门编号进行分组,分组后平均薪水大于1500,按工薪倒充排列.

select ename

from emp

where sal>1200

group by deptno having avg(sal)>1500

order by avg(sal) desc;

4、那些人工资,在平均工资之上.

select ename,sal from emp

wheresal>(select avg(sal) from emp)

5、查找每个部门挣钱最多的那个人的名字.

select ename from emp join

(select max(sal) max_sal,deptno from emp group by deptno) t_max //t_max为每个部门最高工资表

on (emp.deptno=t_max.deptno and emp.sal=t_max.max_sal);

6、把某个人的名字以及他的经理人的名字求出来

select e.ename c_ename, d.ename d_ename from emp e,emp d

where e.mgr = d.empno

7.求部门平均薪水的等级。

select deptno, avg_sal, grade from salgrade sjoin

(select deptno,avg(salary) avg_salfrom emp group by deptno) t_avgsal

on t.avg_sal between s.losal and s.hisal;

8、那些人是经理

select ename from emp where empno in

(select distinct mgr from emp);

9、不用组函数,求薪水的最高值

select distinct sal from emp where

sal not in

(selectdistinct e1.sal t_sal from emp e1 join emp e2on e1.sal<e2.sal);

10、平均薪水最高的部门编号

select deptno,avg(sal) avg_sal from emp group by deptno

havingavg_sal =

(select max(avg(sal)) from emp group by deptno);

11、平均薪水最高的部门名称

 

select dname from dept

where deptno=

(select deptno =

(select deptno,avg(sal) avg_sal from emp group by deptno

havingavg_sal =

(select max(avg(sal)) from emp group by deptno)

)

);

12、比普通员工最高工资还要高的经理人(非老大)

select ename from emp where empno in

(select distinct deptno from emp where deptno is not null)

and sal>(

select max(sal) from emp where empno not in

(select distinct deptno from emp where deptno is not null)

);

### MySQL 查询 示例 #### 基本查询 在MySQL中,`SELECT`语句是最常用的查询方式之一。通过该语句可以从表中检索数据[^2]。 ```sql SELECT * FROM table_name; ``` 此命令会返回指定表中的所有记录。 #### 条件查询 为了获取更精确的数据集,在`WHERE`子句中加入条件表达式来筛选特定的行。 ```sql SELECT column1, column2 FROM table_name WHERE condition; ``` 例如: ```sql SELECT first_name, last_name FROM employees WHERE department_id = 5; ``` 这将只显示部门ID为5的所有员工的名字和姓氏。 #### 排序与分页 利用`ORDER BY`关键字按某一列或多列对结果集进行升序或降序排列;而`LIMIT`则用来限制返回的最大行数,配合`OFFSET`可实现分页功能。 ```sql SELECT product_name, price FROM products ORDER BY price DESC LIMIT 10 OFFSET 20; ``` 上述SQL片段表示从第21条开始取前10个最贵的商品名称及其价格。 #### 聚合函数与分组统计 当需要汇总分析时,可以采用诸如COUNT(), SUM(), AVG()之类的聚合操作符,并结合GROUP BY来进行分类总结。 ```sql SELECT COUNT(*), country FROM customers GROUP BY country HAVING COUNT(*) > 10; ``` 这段代码统计了来自不同国家且数量超过十位顾客的信息。 #### 子查询的应用 对于某些复杂需求,则可能需要用到子查询技术——即在一个外部查询内部再嵌入一个新的查询作为其一部分执行[^3]。 ##### 单值子查询 如果子查询仅返回单个数值,则可以直接将其放在比较运算符后面当作常量处理。 ```sql SELECT employee_id, salary FROM employees WHERE salary > (SELECT MAX(salary) / 2 FROM employees); ``` 这里选取工资高于全体员工平均薪资一半以上的雇员资料。 ##### 多行/多列表达式的运用 面对多个候选答案的情况,应该选用IN、ANY/SOME或者ALL这些特殊关键词连接内外层之间的关系。 ```sql SELECT supplier_id FROM suppliers WHERE supplier_city IN ('New York', 'Los Angeles'); ``` 以上实例展示了如何找出位于纽约市或是洛杉矶市内的供应商编号集合。 #### 组合查询 有时候还需要把几个独立的选择合并起来形成更大的视图展示给用户看,这时就要借助UNION ALL(保留重复项)或者是简单的UNION(去重后拼接)完成这一目标。 ```sql (SELECT order_date, customer_id FROM orders WHERE status='Shipped') UNION (SELECT payment_date, customer_id FROM payments WHERE method='Credit Card'); ``` 这条指令将会列出所有的已发货订单日期连同对应的客户身份识别码,再加上那些使用信用卡付款成功的交易日志。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值