···sql
排名平列排序
例如:
select name,score,rank() over(order by score) 条件 from 表名;
如果有并列的话 . 他们后边的排序会变成这样的。
1
2
2
4
SQL中判断怎么判断字符为null
在SQL中判断为空 用 is 判断
判断不为空用 is not 判断
SQL数据库新手需要注意的题目:
–(1) 查询大陆和香港男歌手演唱的类型为“热门流行”的歌曲信息
select *from Singer a,Song b ,Types c where a.Area=’大陆’ and a.SingrtType=’男歌手’
and a.SingerID=b.SingerID and b.TypeID=c.TypeID and c.TypeName=’热门歌曲’
–(2) 查询香港和台湾女歌手中年龄最小和最大的歌手的出生年月
select MIN(datediff(year, Birthday,getdate()))as 最小年龄 , MAX(DATEDIFF(year,Birthday,GETDATE())) as 最大年龄 from Singer
where Area=’香港’or Area=’台湾’ group by Area
如果操作中遇到通过出生日期查找年龄可以用 datediff()函数 getdate()获得当前时间
–(3) 根据歌手地区和歌手类型分组,显示歌手人数大于1的分组信息,要求显示歌手地区、歌手类型和歌手人数
select Area 地区 ,SingrtType 歌手类型 ,COUNT() 人数 from Singer group by Area ,SingrtType having COUNT()>1
–(4) 根据歌曲类型和歌手,统计歌曲数
select b.TypeName ,count (*)个数 from Song a, Types b ,Singer c where a.TypeID=b.TypeID and
a.SingerID =c.SingerID group by b.TypeName ,c.SingerName
–(5) 根据歌曲类型和歌手,统计歌曲数大于1的分组信息
select b.TypeName ,count (*)个数 from Song a, Types b ,Singer c where a.TypeID=b.TypeID and
a.SingerID =c.SingerID group by b.TypeName ,c.SingerName having COUNT(*)>1
–(6) 根据歌曲类型和歌手,统计歌曲大于1的分组信息,但影视金曲类型歌曲不参与统计
select b.TypeName ,count (*)个数 from Song a, Types b ,Singer c where a.TypeID=b.TypeID and
a.SingerID =c.SingerID and b.TypeName !=’影视金曲’group by b.TypeName ,c.SingerName having COUNT(*)>1
–7.查询emp表中出每个部门的部门代码、薪水之和、平均薪水。
select deptno as 部门代码,sum(sal+ISNULL(tcmoney,0))as 薪水之和,COUNT(*) as 部门人数,avg(sal+ISNULL(tcmoney,0)) as 平均值 from Emp group by deptno
–8.列出所有“CLERK”(办事员)的姓名及其部门名称。
select dname,ename from Dept a,Emp b where a.deptno=b.deptno and job =’CLERK’
–9.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
select ename from Emp where deptno=(select deptno from Dept where dname=’SALES’)