SQL笔试之盘古开天
本次会写一些关于SQL的笔试题,这也是我以前在实际中遇到过的。之所以叫盘古开天,是因为我觉得本次的内容不管是做DBA还是数据库开发的都应该会的,凡是都有第一次么,同时也是工作的敲门砖。
一 行转列问题
首先确保数据库的字符集为ZHS16GBK,以支持如下的中文实验。
create table t4(id int,name varchar2(10),COUNTRY varchar2(20),grade number);
insert into t4 values(1,'KINGBASE','中国',70);
insert into t4 values(2,'ORACLE','美国',90);
insert into t4 values(3,'MYSQL','欧盟',85);
insert into t4 values(4,'DB2','美国',65);
insert into t4 values(5,'MONGDB','中国',75);
insert into t4 values(6,'ORACLE','欧盟',60);
insert into t4 values(7,'KINGBASE','美国',60);
insert into t4 values(8,'MYSQL','中国',90);
insert into t4 values(9,'DB2','欧盟',80);
insert into t4 values(10,'MONGDB','美国',95);
insert into t4 values(11,'MONGDB','欧盟',80);
insert into t4 values(12,'DB2','中国',70);
insert into t4 values(13,'ORACLE','中国',90);
insert into t4 values(14,'MYSQL','美国',80);
insert into t4 values(15,'KINGBASE','欧盟',0);
commit;
结果如下:
SQL> select * from t4;
ID NAME COUNTRY GRADE
---------- ---------- -------------------- ----------
1 KINGBASE 中国 70
2ORACLE 美国 90
3MYSQL 欧盟 85
4DB2 美国 65
5 MONGDB 中国75
6 ORACLE 欧盟60
7 KINGBASE 美国60
8 MYSQL 中国 90
9 DB2 欧盟 80
10 MONGDB 美国 95
11 MONGDB 欧盟 80
12 DB2 中国 70
13 ORACLE 中国 90
14 MYSQL 美国 80
15 KINGBASE 欧盟 0
已选择15行。
select name,sum(case country when '中国' then grade else 0 end) "中国",sum(case country when '美国' then grade else 0 end) "美国",sum(case country when '欧盟' then grade else 0 end) "欧盟"
from t4group by name;
NAME 中国 美国 欧盟
---------- ---------- ---------- ----------
KINGBASE70 60 0
MONGDB 75 95 80
MYSQL90 80 85
ORACLE90 90 60
DB270 65 80
另一种写法:
select name,sum(decode(country,'中国',grade, 0) ) "中国",sum(decode(country,'美国',grade , 0) ) "美国",sum(decode(country,'欧盟',grade, 0)) "美国"
from t4 group by name;
NAME 中国 美国 欧盟
---------- ---------- ---------- ----------
KINGBASE70 60 0
MONGDB 75 95 80
MYSQL90 80 85
ORACLE90 90 60
DB270 65 80
二 多表查询问题
2.1 多表查询顾名思义就是将多个表放在一起查询:
等连接(n个连接必须有n-1个条件)
通过两个表具有相同意义的列,建立连接条件.
查询结果只显示两个列中的值是等值条件的行数据
表中同名列被选择时必须添加表名前缀进行修饰否则无法确定这一列是属于哪个表
SQL> select a.ename||'''s manager is '||b.ename sqltxt from emp a,emp b where b.empno=a.mgr and b.en
ame='KING';
SQLTXT
----------------------------------
BLAKE's manager is KING
JONES's manager is KING
CLARK's manager is KING
2.2 不等连接
A表中的某列数据和B表中一列或多列的关系是非等值关系,大于,小于,不等于,等条件都属于不等连接的范畴( >,<,!=, <=, >=, between and)
SQL> select ename,sal,grade from emp a,salgrade b where sal between losal and hisal;
ENAME SAL GRADE
---------- ---------- ----------
SMITH 800 1
JAMES 950 1
ADAMS 1100 1
WARD 1250 2
MARTIN 1250 2
MILLER 1300 2
TURNER 1500 3
ALLEN 1600 3
CLARK 2450 4
BLAKE 2850 4
JONES 2975 4
SCOTT 3000 4
FORD 3000 4
KING 5000 5
已选择14行。
2.3 自连接
数据都来自一张表,所以在from字句中需要对表添加别名,添加表别名后才能合法化的引用表中的列名.
SQL> select deptno,ename from emp e where sal > (select avg(sal) from emp where deptno=e.deptno) order by 1; --查询每个部门大于平局工资的员工
DEPTNO ENAME
---------- ----------
10 KING
20 JONES
20 SCOTT
20 FORD
30 ALLEN
30 BLAKE
已选择6行。已选择6行。
2.4 全连接:oracle不提供但可实现(union集合)
集合操作 用于多条select语句合并结果
union 并集排序去重
union all 并集 不排序不去重
intersect 交集
minus 差集
行转列及多表查询,这两个知识点是笔试中经常出现的题目。会了基本可以进一家做BI外包项目的公司干些体力活力了。
SQL笔试之盘古开天相关推荐
- 几道经典的SQL笔试题目(有答案)
几道经典的SQL笔试题目(有答案) (1)表名:购物信息 购物人 商品名称 数量 A 甲 2 B 乙 ...
- java山海经之轩辕_轩辕传奇手游山海经任务:盘古开天之遂古之初
<山海经>剧情副本作为轩辕勇士关注度最高的副本,不仅因为我们的游戏本身就是以山海经为背景,还因为这个剧情副本带给大家不一样的游戏体验,同时,还可以收获卡牌提升战力.但是很多小伙伴会卡在一些 ...
- SQL笔试经典50题及答案解析(题目1-10)
前言 最近博主在准备数据分析岗位的笔试和面试,其中的考察重点就是SQL.听说练了这50道题目(题目和数据来源参考:互联网校招SQL笔试经典50题及答案解析),什么现场手撕SQL统统都不怕,我就赶紧来练 ...
- SQL笔试经典50题及答案解析
[转]SQL笔试经典50题及答案解析 建表语句 create table Student(sid varchar(10),sname varchar(10),sage datetime,ssex nv ...
- 数据库整理+SQL笔试2道
数据库整理+SQL笔试2道 Mysql与Oracle区别: Oracle是大型数据库,而Mysql是中小型数据库: Mysql是开源的,而Oracle价格非常高: Oracle占内存大: 单引号的处理 ...
- SQL笔试经典50题及答案解析(题目21-30)
前言 最近博主在准备数据分析岗位的笔试和面试,其中的考察重点就是SQL.听说练了这50道题目(题目和数据来源参考:互联网校招SQL笔试经典50题及答案解析),什么现场手撕SQL统统都不怕,我就赶紧来练 ...
- SQL笔试之远交近攻
之所以叫远交近攻是因为本片为上一篇的进阶之作,夯实目前的SQL基础,为未来SQL的深入学习做一个承接的作用. 一 连接操作符(实现oracle中的for循环)用于快速删除表操作 SQL> sel ...
- 还在写SQL做SAP二开?通过RFC调用NetWeaver,让HANA数据库操作更可靠
相比于从零开始构建全套信息化系统,基于成熟的ERP等行业软件做二次开发是更多中大型企业应对个性化软件需求的首选方案.如何在二开模块中,可靠地对成品软件的数据库进行读写操作,以满足单据自动创建.元数据自 ...
- SQL DEVELOPER 打不开了
今天就突然打不开了. 双击exe图标没有任何反应. 哎,不知道咋回事.但好得能用了.找到解决办法在更新. 然后进入bin文件夹,选择如下 就可以打开了.
最新文章
- java opencv4.40图片实现人脸识别(2)
- MyEclipse极速优化
- 技术负责人的三种角色
- VirtualBox中安装CentOS(新手教程)
- QT的QCache类的使用
- vs2015网站发布时,设置页面合并后程序集的文件版本
- Core ML介绍 (Apple机器学习框架)
- CF1313D:Happy New Year(状压dp)
- 地学计算方法/地统计学(第一章绪论)
- 【Unity项目实战】手把手教学:飞翔的小鸟(1)导入素材
- android 像素密度,屏幕密度,values-sw480dp
- PHP代码执行漏洞总结
- 十大排序方法之基数排序
- 多目标进化优化-SPEA/R
- android支持svg格式图片么,Android Studio2.0中使用SVG图片格式
- Struts2-052 漏洞复现
- outlook2010 html签名,Outlook2010如何设置签名
- 我爱我专业计算机为主题的演讲稿,我爱我专业演讲稿
- 半加器、全加器及其应用
- AE制作粒子飘雪效果
热门文章
- OpenCV-均值滤波cv::blur
- java并发编程面试题_阿里常用Java并发编程面试试题总结
- arcgis运行慢_ArcGIS Pro运行较慢的诊断方法
- Java21天打卡-Day15 数组
- java21天打卡-day2
- 技术分享 | 一文带你了解测试流程体系
- c语言 获取可用内存大小,C语言实现获取内存信息并输出的实例
- MATLAB gui 对表格增添(删除)数据
- json 文档拆分工具_如何把PDF多页文档拆为单页?快看高手私藏实用的技巧
- 计算机基础及photoshop应用试题,全国计算机等级考试计算机基础及Photoshop应用试题答案(1)...