Sql疑难问题ITeye - 牛牛娱乐

Sql疑难问题ITeye

2019年02月24日15时41分53秒 | 作者: 星泽 | 标签: 数学家,部分,薪酬 | 浏览: 1091

select ROW_NUMBER() OVER(ORDER BY id DESC) AS Row Number,emp_no,emp_name from employees


DECLARE
  v_Count INT; 
BEGIN
  SELECT COUNT(USER_ID) INTO v_Count FROM USER_INFORMATION  WHERE USER_ID=:NEW.WORK_NO;
  IF (v_Count=0) THEN 
  INSERT INTO USER_INFORMATION(USER_ID,USER_NAME,DEPT_CODE,DEPT_NAME)
  VALUES(:NEW.WORK_NO,:NEW.WORK_NAME,:NEW.DEPT_CODE,:NEW.DEPT_NAME); 
  END IF;
END;
/
刺进一个表的一起,向另一个表刺进记载。
2010-5-10 春 晴
NAME  TYPE  WEIGHT
1  A  50
1  B  30
1  C  40
1  D  60
select name,WMSYS.WM_CONCAT(type) AS ENAMES from aa group by name
运转成果:
NAME  TYPE
1  B,C,A,D
留意:WMSYS.WM_CONCAT函数为oracle数据库特有的。

Oracle特有的运算符,decode,Rollup、Cube 运运符是 GROUP BY 子句的扩大。Rollup、Cube 运算符能够在GROUP BY的基础上再发生,行/列核算信息与全表汇总信息。
//Rollup语法
SELECT [column,] group_function(column) FROM table
[WHERE condition] [GROUP BY [Rollup] group_by_expression]
[HAVING having_expression]; [ORDER BY column];
//cube语法
SELECT [column,] group_function(column) FROM table
[WHERE condition] [GROUP BY [CUBE] group_by_expression]
[HAVING having_expression]; [ORDER BY column];


//按部分,职一定部分,岗位平均薪酬并核算各部分平均薪酬与总平均薪酬
select dept,job,avg(salary) from salary group by rollup(dept,job)
//按部分,职一定部分,岗位平均薪酬并核算各部分平均薪酬、岗位平均薪酬以及总平均薪酬
select dept,job,avg(salary) from salary group by cube(dept,job)
//经过对Dept字段进行 “分区汇总”得到个人信息明细与每个部分salary的汇总信息
select name,dept,salary,sum(salary) over (partition by dept) total_salary from salary
//个人salary除以部分salary的汇总得到所占份额
select name,dept,salary,sum(salary) over (partition by dept) total_salary,salary*100/sum(salary) over (partition by dept) percent from salary
//双胞胎年纪的核算
数学家X: 你有几个孩子?
数学家Y: 我有三个女儿。
数学家X: 她们有多大?
数学家Y:假如你把她们的年纪相乘,那积是36。
数学家X:这些信息还不太够。
数学家Y:假如你把她们年纪相加,你会发现年纪之和与这个
房间的人数持平。
数学家X 环顾房子一周后又说:这些信息还不行。
数学家Y: 我最大的女儿有一个木腿宠物老鼠。
数学家X:你有一对2岁的双胞胎吗?

with age_list as (
select rownum age
from all_objects
where rownum = 36),
product_check as (
select
age1.age as youngest,
age2.age as middle,
age3.age as oldest,
age1.age + age2.age + age3.age as summed,
age1.age * age2.age * age3.age as product
from
age_list age1,
age_list age2,
age_list age3
where
age2.age =age1.age and
age3.age =age2.age
and age1.age * age2.age * age3.age = 36),
summed_check as (select youngest,middle,oldest,summed,product from (select youngest,middle,oldest,summed,product,
count(*) over (partition by summed) ct from product_check) where ct 1)
select * from summed_check where oldest middle;

//查询SQL句子履行速度,适用于SQL server数据库
在各个select句子前加:
declare @d datetime
set @d=getdate()
并在select句子后加:
select [句子履行花费时刻(毫秒)]=datediff(ms,@d,getdate())


比如要找某个时刻为每周第几天就能够
SQL select to_char(to_date(20070101,yyyymmdd),d) from dual;
Oracle的SQL采用了mi替代分钟。select to_date(2005-01-01 13:14:20,yyyy-MM-dd HH24:mi:ss) from dual;
  2.另要以24小时的方式显现出来要用HH24
select to_char(sysdate,yyyy-MM-dd HH24:mi:ss) from dual;//mi是分钟
select to_char(sysdate,yyyy-MM-dd HH24:mm:ss) from dual;//mm会显现月份
留意:select chr(ascii(max(version))+1) from table  改动版本号,例如A变成B
//sqlserver触发器

ALTER TRIGGER [dbo].[TrigCategoryDelete]
  ON  [dbo].[category]
  instead of delete
AS
BEGIN
declare @CaId int
select @CaId=id from deleted
delete comment where newsid in (select id from news where caid=@CaId)
delete from news where caid=@CaId
delete from category where id=@CaId 
END
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    Sql疑难问题ITeye

    数学家,部分,薪酬
  • 2
  • 3

    主键与外键ITeye

    主键,数据库,数据
  • 4

    Oracle学习笔记(三)ITeye

    用户,权限,命令
  • 5

    mysql大数据量导出运用ITeye

    企图,运用,成果
  • 6
  • 7

    数据库连接池完成原理ITeye

    数据库,运用,体系
  • 8

    数据库连接符ITeye

    联系,区别,数据库
  • 9

    Informix ODBC设置ITeye

    东西,装备,官方网站
  • 10

    ORACLE的阻隔等级ITeye

    业务,修正,句子