最近萌生换工作的念头,于是上网下载了一些公司的面试题,重新看了面试题中的Sql部分,这些查询题有时候只是兜一个弯角来考,对于给EF惯坏的孩子来说还是有点难度的(给面试官鄙视了几下的结果),所以列出最近感觉比较有意思的Sql查询题。

1.查询出子节点最多的NodeName,如下图的table,

NodeName 子节点
节点1 1
节点2 2
节点3 1
节点3 1
节点3 1
节点4 2
节点4 3
 declare @t table( id int ,NodeName varchar(50 ),parentId int)

 insert into @t
select 4, '节点1' ,1
union all
select 5, '节点2' ,2
union all
select 6, '节点3' ,1
union all
select 7, '节点3' ,1
union all
select 1, '节点3' ,1
union all
select 2, '节点4' ,2
union all
select 3, '节点4' ,3 select * from @t select top 1 nodename, COUNT(*) from @t group by NodeName order by COUNT(*) desc

2.有表A如下图,需要转换成表B格式

单号   金额                              

Rk1     10

Rk2     20

Rk3     -30

Rk4     -10

  表A

单号   收入   支出

Rk1     10       0

Rk2     20       0

Rk3      0        30

Rk4      0        10

  表B

 declare @t table(danhao nvarchar(20),amount int)
insert into @t
select 'PK1',10 UNION
select 'PK2',20 UNION
select 'PK3',-10 UNION
select 'PK4',-30
select * from @t
select danhao,
(case when amount>0 then amount else 0 end) as N'收入',
(case when amount>0 then 0 else amount end) as N'支出'
from @t

3.有一张表T_Scores,记录比赛成绩

Date                 Name   Score 
2008-8-8          拜仁       胜
2008-8-9          奇才       胜
2008-8-9          湖人       胜
2008-8-10        拜仁       负
2008-8-8          拜仁       负
2008-8-12        奇才       胜
 
要求输出下面的格式:
Name   胜     负
拜仁     1       2
湖人     1       0
奇才     2       0
 
 declare @t table(DateT datetime,name nvarchar(20),Score nvarchar(20))
insert into @t
select '2008-8-8',N'拜仁',N'胜' union all
select '2008-8-8',N'奇才',N'胜' union all
select '2008-8-8',N'湖人',N'胜' union all
select '2008-8-8',N'拜仁',N'负' union all
select '2008-8-8',N'拜仁',N'胜' union all
select '2008-8-8',N'拜仁',N'胜' union all
select '2008-8-8',N'奇才',N'胜' union all
select '2008-8-8',N'湖人',N'负'
select name,
SUM(case Score when N'胜' then 1 else 0 end)as N'胜',
SUM(case Score when N'负' then 1 else 0 end)as N'负'
from @t
group by name

4.根据下图列表求和

id value
1 1
2 2
5 2
6 2
8 3
9 4
 declare @t table( id int ,value int )
insert into @t
select 1, 1
union all
select 2, 2
union all
select 5, 2
union all
select 6, 2
union all
select 8, 3
union all
select 9, 4 select * from @t
--1.按id 排序,取得所有的奇数 (单数) 行value之和 select SUM (m. value) from(
select ROW_NUMBER () over (order by id )row, id,value from @t)m
WHERE m .row% 2=1 --2.取得所有id 为奇数的行 value之和
select SUM (value) from @t where id% 2=1

5.行转列5.1与列转行5.2

5.1如下图所示

name class score
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94

转换成

name 语文 数学 物理
张三 74 83 93
李四 74 84 94
 declare @t table ( name varchar (10), 课程 varchar (10), score int )

 insert into @t
select ' 张三', '语文' ,74
union all
select ' 张三', '数学' ,83
union all
select ' 张三', '物理' ,93
union all
select ' 李四', '语文' ,74
union all
select ' 李四', '数学' ,84
union all
select ' 李四', '物理' ,94 select * from @t select name,
max(case 课程 when '语文' then score else 0 end) 语文 ,
max(case 课程 when '数学' then score else 0 end) 数学 ,
max(case 课程 when '物理' then score else 0 end) 物理
from @t
group by name

5.2列转行

 declare @t table ( 姓名 varchar (10), 语文 int ,数学 int,物理 int)

 insert into @t
select ' 张三', 74,83 ,93
union all
select ' 李四', 74,84 ,94 select * from
(
select 姓名,课程 ='语文 ',分数 =语文 from @t
union all
select 姓名,课程 ='数学 ',分数 =数学 from @t
union all
select 姓名,课程 ='物理 ',分数 =物理 from @t
)m

  后期等待多了之后再用心整理成一份Sql文档,现在题目还少,努力去涵盖面试中遇到的,谢谢观看。

Sql面试常考题(持续添加)的更多相关文章

  1. java面试常考题

    基础知识: 1.C++或Java中的异常处理机制的简单原理和应用. 当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常.违反语义规则包括2种情况.一种是JAVA类库 ...

  2. leetcode Two Sum II - Input array is sorted <面试常考题>

    题目描述 //二分查找的变形   用头尾两个指针进行  面试考察题 class Solution { public: vector<int> twoSum(vector<int> ...

  3. 前端一面/面试常考题1-页面布局:假设高度已知,请写出三栏布局,其中左栏、右栏宽度各为300px,中间自适应。

    题目:假设高度已知,请写出三栏布局,其中左栏.右栏宽度各为300px,中间自适应. [题外话:日常宣读我的目标===想要成为一名优雅的程序媛] 一.分析 1. 题目真的像我们想得这么简单吗? 其实不然 ...

  4. PHP面试常考之会话控制

    你好,是我琉忆,欢迎您来到PHP面试专栏.本周(2019.2-25至3-1)的一三五更新的文章如下: 周一:PHP面试常考之会话控制周三:PHP面试常考之网络协议周五:PHP面试常考题之会话控制和网络 ...

  5. 【C++面试】常考题复习:排序算法

    // Sort.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdlib.h> /*********** ...

  6. python面试总结3(性能分析优化,GIl常考题)

    python性能分析和优化,GIL常考题 什么是Cpython GIL Cpython解释器的内存管理并不是线程安全的 保护多线程情况下对python对象访问 Cpython使用简单的锁机制避免多个线 ...

  7. python面试总结2(函数常考题和异常处理)

    python函数常考题 可变类型为参数 不能类型为参数 python如何传递参数 传递值还是引用呢?都不是.唯一支持的参数传递是共享穿参 Call by Object(Call by Object R ...

  8. PHP+mysql常考题

    PHP+mysql常考题 来自<PHP程序员面试笔试宝典>,涵盖了近三年了各大型企业常考的PHP面试题,针对面试题提取出来各种面试知识也涵盖在了本书. 常考的mysql基础题 问题:设教务 ...

  9. PHP面试常考内容之Memcache和Redis(2)

    你好,是我琉忆.继周一(2019.2-18)发布的"PHP面试常考内容之Memcache和Redis(1)"后,这是第二篇,感谢你的支持和阅读.本周(2019.2-18至2-22) ...

随机推荐

  1. 《C#并行编程高级教程》第7章 VS2010任务调试 笔记

    没有什么好说的,主要是将调试模式下的Parallel Tasks窗体和Parallel Stacks窗体.折腾一下应该比看书效果好.(表示自己没有折腾过) 另外值得注意的是,主线程不是一个任务.所以主 ...

  2. 【转】foxmail突然打不开了,双击没反应,怎么回事呀

    原文网址:http://tieba.baidu.com/p/3492526384 解决方法如下:1.进入foxmail安装目录(默认在D盘Program Files下层,右击foxmail这个文件夹, ...

  3. HTTP缓存是如何实现

    浏览器是如何知道使用缓存的,其实这都是通过http中,浏览器将最后修改时间发送请求给web服务器,web服务器收到请求后跟服务器上的文档最后修改的时间对比,如果web服务器上最新文档修改时间小于或者等 ...

  4. epub-2格式电子书剖析之一:文档构成

    epub格式电子书遵循IDPF推出的OCF规范,OCF规范遵循ZIP压缩技术,即epub电子书本身就是一个ZIP文件,我们将epub格式电子书的后缀.epub修改为.zip后,可以通过解压缩软件(例如 ...

  5. Linux下的iwpriv(iwlist、iwconfig)的简单应用

    无线网络飞速发展的今天,许多设备都提供了连接无线网络的功能. 那么Linux下的wifi到底该怎么配置.连接呢?? 开始配置之前,我们要说说iw家族.iw是linux下常用的wifi配置工具,网上有相 ...

  6. spoj 8222 Substrings(后缀自动机+DP)

    [题目链接] http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28005 [题意] 给一个字符串S,令F(x)表示S的所有长度为 ...

  7. 关于VNC黑屏的问题

    注意: 1.vncserver启动后生成的ID号(1,2,3)要和VNCview里面填入的 ip:ID要保持一致  不然看到的就是黑屏 比如:vncserver启动后 产生: localhost.lo ...

  8. Hibernate4搭建Log4J日志管理(附Log4j.properties配置详解)

    1.首先加入slf4j的jar包,即slf4j-api-1.6.1.jar 在hibernate官网下载hibernate-release-4.2.2.Final.zip并解压,在hibernate- ...

  9. C++中构造函数和析构函数调用的时机

    今天看书忽然对这个地方有点模糊,尤其是析构函数在调用默认的析构函数和用户自己覆写的析构函数的时候有点意识模糊呢.写段代码总结下 #include <iostream> using name ...

  10. HDOJ-ACM1015(JAVA) 运用 组合、全排列实现

    转载声明:原文转自:http://www.cnblogs.com/xiezie/p/5573934.html 这个题目的题意:(自己结合百度翻译,简单的翻译了一下) “这个项目是在一个在二楼图书馆一幅 ...