一、表内容

Tdate

Tresulte
2019/5/9
2019/5/9
2019/5/9
2019/5/9
2019/5/10
2019/5/10
2019/5/10

结果要生成如下

日期
2019/5/9 2 2
2019/5/10 1 2

参考答案

考虑的是行列转换的问题,使用case when解决

create table tmp(Tdate varchar(10), Tresulte nchar(1));
insert into tmp values('2019-05-09','胜');
insert into tmp values('2019-05-09','胜');
insert into tmp values('2019-05-09','负');
insert into tmp values('2019-05-09','负');
insert into tmp values('2019-05-10','胜');
insert into tmp values('2019-05-10','负');
insert into tmp values('2019-05-10','负');
方法一
select Tdate '日期',
sum(case when Tresulte = '胜' then 1 else 0 end) '胜',
sum(case when Tresulte = '负' then 1 else 0 end) '负',
from tmp group by Tdate;
方法二
select N.Tdate '日期', N,胜, M,负
from (
select Tdate, count(*) '胜' from tmp where
Tresulte = '胜' group by Tdate ) N
inner join
(select Tdate, count(*) '负' from tmp where
Tresulte = '负' group by Tdate ) M
on N.Tdate = M.Tdate;
二、表中有A B C 三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列

参考答案

select
(case when a>b then a else b end ),
(case when b>c then b else c end)
from table_name
三、请取出tb_send表中日期(SendTime字段)为当天的所有记录。(SendTime字段为datetime型,包含日期和时间)

参考答案
select * from tb_send where datediff (dd,SendTime, getdate()) =0
四、有一张表table,里面包含三个字段:语文、数学、英语。其中有三条记录

语文 数学 英语
70 80 58

请用一条sql语句查询出这三条记录并按照以下条件显示出来:大于或等于80为优秀,大于或等于60为及格,小于60为不及格。

显示格式

语文 数学 英语
及格 优秀 不及格

参考答案
select
(case when '语文'>=80 then '优秀'
      when '语文'>=60 then '及格'
      else '不及格') as '语文',
(case when '数学'>=80 then '优秀'
      when '数学'>=60 then '及格'
      else '不及格') as '数学',
(case when '英语'>=80 then '优秀'
      when '英语'>=60 then '及格'
      else '不及格') as '英语',
from table

五、从table1,table2中取出如table3所列格式数据,其中table1只展示了部分数据,还有4到12月份的数据未完全展示,table3也只展示了部分数据,还有4到12月份的数据未完全展示。

table1

月份mon 部门dep 业绩yj
1 01 10
1 02 10
2 03 5
2 02 8
3 04 9
3 03 8

table2

部门dep 部门名称dname
01 国内业务一部
02 国内业务二部
03 国内业务三部
04 国内业务部

结果如下:

table3

部门dep 一月份 二月份 三月份
01 10 null null
02 10 8 null
03 null 5 8
04 null null 9

参考答案

select a.dep
sum(case when b.mon=1 then b.yj else 0 end ) as '一月份',
sum(case when b.mon=2 then b.yj else 0 end ) as '二月份',
sum(case when b.mon=3 then b.yj else 0 end ) as '三月份',
sum(case when b.mon=4 then b.yj else 0 end ) as '四月份',
sum(case when b.mon=5 then b.yj else 0 end ) as '五月份',
sum(case when b.mon=6 then b.yj else 0 end ) as '六月份',
sum(case when b.mon=7 then b.yj else 0 end ) as '七月份',
sum(case when b.mon=8 then b.yj else 0 end ) as '八月份',
sum(case when b.mon=9 then b.yj else 0 end ) as '九月份',
sum(case when b.mon=10 then b.yj else 0 end ) as '十月份',
sum(case when b.mon=11 then b.yj else 0 end ) as '十一月份',
sum(case when b.mon=12 then b.yj else 0 end ) as '十二月份'
from table2 a left join table1 b on a.dep=b.dep

六、一个表中的id有多少个记录,把所有这个id的记录查出来,并显示共有多少条记录数。

参考答案:

--方法一

select id, count(*)
from tb
group by id
having count(*)>1;
--方法二:
select *
  from (select count(ID) as count from table group by ID) T
 where T.count > 1

七、表形式如下:

Year Salary
2010 1000
2011 2000
2012 3000
2013 4000

想得到如下形式的查询结果

Year Salary
2010 1000
2011 3000
2012 6000
2013 10000

参考答案:

--连接查询
select b.Tyear, sum(a.salary) salary
  from hello a, hello b
 where a.Year <= b.Year
 group by b.Year

--子查询
select year, (select sum(salary)
              from hello as B
              where B.year <= A.year)
  from hello as A

常见面试SQL问题的更多相关文章

  1. java异常常见面试问题

    java异常常见面试问题 一.java异常的理解 异常主要是处理编译期不能捕获的错误.出现问题时能继续顺利执行下去,而不导致程序终止,确保程序的健壮性. 处理过程:产生异常状态时,如果当前的conte ...

  2. Hibernate的10个常见面试问题及答案

    在Java J2EE方面进行面试时,常被问起的Hibernate面试问题,大多都是针对基于Web的企业级应用开发者的角色的.Hibernate框架在Java界的成功和高度的可接受性使得它成为了Java ...

  3. Android常见面试笔试题目

    Android常见面试笔试题目 1.在多线程编程这块,我们经常要使用Handler,Thread和Runnable这三个类,那么他们之间的关系你是否弄清楚了呢? 答:可以处理消息循环的线程,他是一个拥 ...

  4. SQL常见优化Sql查询性能的方法有哪些?

    常见优化Sql查询性能的方法有哪些? 1.查询条件减少使用函数,避免全表扫描 2.减少不必要的表连接 3.有些数据操作的业务逻辑可以放到应用层进行实现 4.可以使用with as 5.使用“临时表”暂 ...

  5. Android开发面试经——6.常见面试官提问Android题②(更新中...)

    版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http://blog.csdn.net/fi ...

  6. Android开发面试经——5.常见面试官提问Android题①

    版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客: http://blog.csdn.net/f ...

  7. 机器学习&数据挖掘笔记(常见面试之机器学习算法思想简单梳理)

    机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 作者:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 前言: 找工作时( ...

  8. 50个常用的笔试、面试sql语句

    50个常用的笔试.面试sql语句 2009-12-17 15:05   Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,s ...

  9. [转]机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)

    机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 转自http://www.cnblogs.com/tornadomeet/p/3395593.html 前言: 找工作时(I ...

随机推荐

  1. mona!mona!mona!

    $ PS: $ 关于\(mona\) 是只很棒的猫啦!想知道的可以自己去看\(persona5\)的游戏流程或者动画版啦. \(PPS:\) 补充一下设定啊,\(mona\)是摩尔加纳(原名)的代号啦 ...

  2. SQLite和MySQL数据库的差别与应用

    简单来说,SQLITE功能简约.小型化,追求最大磁盘效率:MYSQL功能全面,综合化.追求最大并发效率.假设仅仅是单机上用的,数据量不是非常大.须要方便移植或者须要频繁读/写磁盘文件的话.就用SQLi ...

  3. DELPHI 调试IOS时出现 Please specify exact device preset UUID

    右击设备DEVICE, 选择REFRESH刷新, 再重新选择一个设备即可.

  4. 如何安全修改cocoapods上的第三方代码

    其实搞java的都知道maven管理,解决第三方代码修改的办法就是架一个服务器,把这些修改的库放在这里,然后再maven里配置哪些需要用本地仓库的.其实cocoapods也可以做本地包管理: 大致方法 ...

  5. Scala从入门到放弃(三)Scala的数组、映射、元组和集合

    1.数组 1.1定长数组和变长数组 object ArrayDemo { def main(args: Array[String]): Unit = { //初始化一个长度为8的定长数组,其数组元素均 ...

  6. selenuim&PhantomJS&Beautifulsoup练习经典实例

    # coding = utf-8__autor__ = 'litao' from selenium import webdriverfrom selenium.webdriver.common.by ...

  7. 利用 Skywalking 搭建 APM(应用性能管理)— 安装与配置

    1.什么是 Skywalking Skywalking 是一个APM系统,即应用性能监控系统,为微服务架构和云原生架构系统设计.它通过探针自动收集所需的指标,并进行分布式追踪.通过这些调用链路以及指标 ...

  8. 前端工具-调试压缩后的JS(Source Map的使用)

    使用 Source Map 可以在 FF 的调试器. Chrome 的 Sources 和 VSCode 中给压缩前的文件下断点,也可以方便定位错误发生的位置(定位到压缩前的文件). 何为 Sourc ...

  9. redhat 修改yum源

    问题现象: 现有的yum安装git失败,提示yum源连接失败 Error Downloading Packages: git--.el6_4..x86_64: failure: Packages/gi ...

  10. day24—JavaScript实现导航栏底部引线跟随移动

    转行学开发,代码100天——2018-04-09 前面的学习笔记中记录过,利用:before和:after实现导航栏鼠标移动跟随效果,今天通过JavaScript代码实现同样的效果,以作对比. < ...