sal

PIVOT 行列转置函数的使用

这一生的挚爱 提交于 2019-12-01 15:37:54
数据如下图,有一个需求,统计scott.emp中不同部门(deptno)的薪资(sal)总数。 如果不考虑行列转换的话,那么最基本的方法是通过deptno进行分组: SELECT deptno, SUM(sal) FROM scott.emp GROUP BY deptno; 效果如下: 如果要在一行中显示所有部门的薪资总和,那么可以使用SUM(DECODE...)这种方式: SELECT SUM(DECODE(deptno, 10, sal)) AS dept_10, SUM(DECODE(deptno, 20, sal)) AS dept_20, SUM(DECODE(deptno, 30, sal)) AS dept_30 FROM scott.emp; 效果如下: 或者是使用SUM(CASE...)这种方式做统计: SELECT SUM(CASE WHEN deptno = 10 THEN sal ELSE 0 END) AS dep_10, SUM(CASE WHEN deptno = 20 THEN sal ELSE 0 END) AS dept_20, SUM(CASE WHEN deptno = 30 THEN sal ELSE 0 END) AS dept_30   FROM   scott.emp; 如果使用PIVOT的话,效果和前两种是一样的: SELECT

oracle第三天+第四天

淺唱寂寞╮ 提交于 2019-12-01 12:42:33
逐值替换 decode,组成字符串 extract 年龄相减 TO_char转换函数 日期对象 to_date(不能用中文) 控制转换 nvl()将空值转为0 也可以(comm,10,0)满足是10,不满足是0 分析函数 row_number它是将相同的排名直接列出来 rank()将相同的排名并列,但是下一个就没有了 dense_rank()将相同的排名并列,下面的编号也有 赋权限 grant create synonym to lvmin 给账号赋同义词的权限 grant select,update,delete on scott.emp to lvmin 第一种:私有同义词 谁创建的账号就是谁的, 第二种:共有同义词, create public synonym a for scott.emp 这个同义词是给表赋予的。 --逐值替换 select ename,decode(deptno,10,'开发部',20,'测试部',30,'维护部') from emp; -- 年份差 select ename,extract(year from sysdate) - extract(year from hiredate)as 工龄 from emp -- 转换函数 Select TO_CHAR(0.12355,'$0.9999') FROM DUAL;--转为字符串,四舍五入 -

mybaits 动态SQL语句

纵饮孤独 提交于 2019-12-01 12:29:52
-------------------------动态查询--------------------------------------- <select id="findAll" parameterType="map" resultMap="studentMap"> select * from students <where> <if test="pid!=null"> and students_id = #{pid} </if> <if test="pname!=null"> and students_name = #{pname} </if> <if test="psal!=null"> and students_sal = #{psal} </if> </where> </select> public List<Student> findAll(Integer id,String name,Double sal) throws Exception{ SqlSession sqlSession = null; try{ sqlSession = MybatisUtil.getSqlSession(); Map<String,Object> map = new LinkedHashMap<String,Object>(); map.put("pid",id); map.put(

mysql数据库练习题(含答案)

对着背影说爱祢 提交于 2019-12-01 08:05:22
创建数据库 1 DROP DATABASE IF EXISTS test1; #如果存在test1数据库删除test1数据库 2 CREATE DATABASE test1; #创建test1数据库 3 USE test1; #切换的test1数据库里 创建部门表 1 DROP IF EXISTS TABLE DEPT; #如果存在dept数据表,删除dept数据表. 2 CREATE TABLE DEPT( 3 DEPTNO int PRIMARY KEY, #部门编号 4 DNAME VARCHAR(14) , #部门名称 5 LOC VARCHAR(13) #部门地址 6 ) ; 向部门表插入数据 1 INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK'); 2 INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS'); 3 INSERT INTO DEPT VALUES (30,'SALES','CHICAGO'); 4 INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON'); 创建员工表 1 DROP IF EXISTS TABLE EMP; #如果存在emp数据表,删除emp数据表. 2 CREATE TABLE EMP( 3

11.oracle 事务

佐手、 提交于 2019-12-01 05:31:13
一、什么是事务 事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml(数据操作语言,增删改,没有查询)语句要么全部成功,要么全部失败。 如:网上转账就是典型的要用事务来处理,用于保证数据的一致性。 二、事务和锁 当执行事务操作时(dml语句),oracle会在被作用的表上加锁,防止其它用户修改表的结构。这里对我们的用户来讲是非常重要的。 三、提交事务 当用commit语句执行时可以提交事务。当执行了commit语句之后,会确认事务的变化、结束事务。删除保存点、释放锁,当使用commit语句结束事务之后,其它会话将可以查看到事务变化后的新数据。保存点就是为回滚做的。保存点的个数没有限制。 四、回滚事务 在介绍回滚事务前,我们先介绍一下保存点(savepoint)的概念和作用。保存点是事务中的一点。用于取消部分事务,当结束事务时,会自动的删除该事务所定义的所有保存点。当执行rollback 时,通过指定保存点可以回退到指定的点,这里我们作图说明。 五、事务的几个重要操作 1.设置保存点 savepoint a 2.取消部分事务 rollback to a 3.取消全部事务 rollback eg、 SQL> savepoint a; --创建保存点a Savepoint created SQL> delete from emp where empno=7782; 1

3、条件查询

白昼怎懂夜的黑 提交于 2019-12-01 02:43:43
1 语法格式: select 字段,字段... from 表名 where 条件; 执行顺序:先from,然后where,最后select 1. 查询工资等于5000的员工姓名? select enamel from emp where sal = 5000 ; 2. 查询Smith的工资 select enamel from emp where ename = 'Smith' ;字符串使用单引号括起来 注意: 在数据库中 null 不是一个值,代表什么也没有,为空 空不是一个值,不能用等号衡量 必须使用 is null 或者 is not null and 和 or 连起来使用 注意:当运算符的优先级不确定的时候加小括号。 in等同于 or:找出工作岗位是m 或 n的员工 select ename,job from emp where job = 'm' or job = 'n'; select ename,job from emp where job in('m','n'); select ename,job from emp where job in('1000,'5000') in后面的值不是区间,是具体的值 not in:不在这几个值之间 模糊查询 like 找出名字中含有o的? (在模糊查询当中,必须掌握两个特殊的符号,一个是%,另一个是_) %代表多个字符,

4、条件查询02

ぃ、小莉子 提交于 2019-12-01 02:43:40
1 关于查询结果的去重? select distinct job from emp; //distinct 关键字 +-----------+| job |+-----------+| CLERK || SALESMAN || MANAGER || ANALYST || PRESIDENT |+-----------+ select ename,distinct job from emp; 以上的sql语句是错误的。 注意:distinct 只能出现在所有字段的最前面。 select distinct job from emp; //distinct对于后面的联合起来去重 +--------+-----------+| deptno | job |+--------+-----------+| 20 | CLERK || 30 | SALESMAN || 20 | MANAGER || 30 | MANAGER || 10 | MANAGER || 20 | ANALYST || 10 | PRESIDENT || 30 | CLERK || 10 | CLERK |+--------+-----------+ 案例:统计岗位的数量 select count(distinct job) from emp; +---------------------+| count

Java this关键字详解

青春壹個敷衍的年華 提交于 2019-11-30 13:31:28
Java中this关键字在构造方法中的使用 Java this关键字详解 this 关键字用来表示当前对象本身,或当前类的一个实例,通过 this 可以调用本对象的所有方法和属性。例如: public class Demo { public int x = 10 ; public int y = 15 ; public void sum () { // 通过 this 点取成员变量 int z = this .x + this .y ; System .out . println ( "x + y = " + z ); } public static void main (String [] args ) { Demo obj = new Demo (); obj . sum (); } } 运行结果: x + y = 25 上面的程序中,obj 是 Demo 类的一个实例,this 与 obj 等价,执行 int z = this.x + this.y;,就相当于执行 int z = obj.x + obj.y;。 注意:this 只有在类实例化后才有意义。 使用this区分同名变量 成员变量与方法内部的变量重名时,希望在方法内部调用成员变量,怎么办呢?这时候只能使用this,例如: public class Demo { public String name ; public

sql自带库高级查询相关例题

孤街浪徒 提交于 2019-11-30 12:50:23
1. 查询部门 20 的员工,每个月的工资总和及平均工资。 Select depnto,sum ( sal ),avg( sal ) from emp where deptno = 20 order by deptno 2. 查询工作在 CHICAGO 的员工人数,最高工资及最低工资。 Select count(distinct ename ),max( sal ),min( sal ) from Emp e,dept d where d.loc =('CHICAGO') and e.deptno = d.deptno 3. 查询员工表中一共有几种岗位类型。 Select deptno,sum ( sal ),avg( sal ) from emp where deptno = 20 order by deptno Select count(distinct ename ),max( sal ),min( sal ) from Emp e,dept d where d.loc =('CHICAGO') and e.deptno = d.deptno Select count(distinct job) from Emp 1. 查询部门 20 的员工,每个月的工资总和及平均工资。 Select depnto,sum ( sal ),avg( sal ) from emp where

sql常用语句

匆匆过客 提交于 2019-11-30 11:15:18
--https://liushilive.github.io/ --数据 data --数据库 DB Database --数据库管理系统 DBMS /*学什么 数据定义语言 DDL:create、alter、drop 数据操纵语言 DML:insert、update、delete、select 数据查询语言 DQL:order by、group by 数据控制语言 DCL:grant、revoke 事务控制语言 TCL:commit、rollback、savepoint */ --语法结构:创建用户 create user 用户名 identified by 密码 [account lock|unlock]; --ex: create user tom identified by tom; --语法结构:修改用户密码 alter user 用户名 identified by 新密码; --ex: alter user tom identified by 123456; --语法结构:锁定|非锁定 用户 alter user 用户名 account lock|unlock; --ex: alter user tom account unlock; --语法结构:删除用户 drop user 用户名 cascade; --ex: drop user tom; /*权限-角色