常见的sql面试题

1、一组通话记录(总共500万条): 
ID 主叫号码 被叫号码 通话起始时间   通话结束时间           通话时长 
1  98290000 0215466546656 2007-02-01 09:49:53.000 2007-02-01 09:50:16.00023 
2  98290000 021546654666  2007-02-01 09:50:29.000 2007-02-0109:50:41.000 12 
3  98290000 021546654666  2007-02-01 09:50:58.000 2007-02-0109:51:12.000 14 
4  68290900 0755133329866 2007-02-01 10:04:31.000 2007-02-01 10:07:13.000162 
5  78290000 0755255708638 2007-02-01 10:48:26.000 2007-02-01 10:49:23.00057 
6  78290000 0755821119109 2007-02-01 10:49:39.000 2007-02-01 10:52:55.000196 
7  78290000 035730928370  2007-02-01 11:30:45.000 2007-02-0111:31:58.000 73 
8  78290000 0871138889904 2007-02-01 11:33:47.000 2007-02-01 11:35:00.00073 
9  68290000 035730928379  2007-02-01 11:52:20.000 2007-02-0111:54:56.000 156 
10 68290000 0298521811199 2007-02-01 12:44:45.000 2007-02-01 12:45:04.000 19 
求其中同一个号码的两次通话之间间隔大于10秒的通话记录ID

 1 create   table   tonghua
 2 (
 3 ID   int   ,
 4 主叫号码   varchar(15),
 5 被叫号码   varchar(15),
 6 通话起始时间   datetime,
 7 通话结束时间   datetime   ,
 8 通话时长   int   ,
 9 )
10 truncate   table   tonghua
11 insert   into   tonghua
12 select   1   ,   ‘98290000 ‘,   ‘0215466546656 ‘,   ‘2007-02-01   09:49:53.000 ‘,   ‘2007-02-01   09:50:16.000 ‘,   23
13 union   all   select   2,     ‘98290000 ‘,   ‘021546654666 ‘,     ‘2007-02-01   09:50:29.000 ‘,   ‘2007-02-01   09:50:41.000 ‘,   12
14 union   all   select   3,     ‘98290000 ‘,   ‘021546654666 ‘,     ‘2007-02-01   09:50:58.000 ‘,   ‘2007-02-01   09:51:12.000 ‘,   14
15 union   all   select   4,     ‘68290000 ‘,   ‘0755133329866 ‘,   ‘2007-02-01   10:04:31.000 ‘,   ‘2007-02-01   10:07:13.000 ‘,   162
16 union   all   select   5,     ‘78290000 ‘,   ‘0755255708638 ‘,   ‘2007-02-01   10:48:26.000 ‘,   ‘2007-02-01   10:49:23.000 ‘,   57
17 union   all   select   6,     ‘78290000 ‘,   ‘0755821119109 ‘,   ‘2007-02-01   10:49:39.000 ‘,   ‘2007-02-01   10:52:55.000 ‘,   196
18 union   all   select   7,     ‘78290000 ‘,   ‘035730928370 ‘,     ‘2007-02-01   11:30:45.000 ‘,   ‘2007-02-01   11:31:58.000 ‘,   73
19 union   all   select   8,     ‘78290000 ‘,   ‘0871138889904 ‘,   ‘2007-02-01   11:33:47.000 ‘,   ‘2007-02-01   11:35:00.000 ‘,   73
20 union   all   select   9,     ‘68290000 ‘,   ‘035730928379 ‘,     ‘2007-02-01   11:52:20.000 ‘,   ‘2007-02-01   11:54:56.000 ‘,   156
21 union   all   select   10,   ‘68290000 ‘,   ‘0298521811199 ‘,   ‘2007-02-01   12:44:45.000 ‘,   ‘2007-02-01   12:45:04.000 ‘,   19 

展开代码

以上是表的创建

1 SELECT A.* FROM tonghua AS A INNER JOIN tonghua AS B ON A.ID = B.ID-1
2 WHERE  A.主叫号码=B.主叫号码 AND DATEDIFF(MINUTE,A.通话结束时间,B.通话起始时间)> 10 UNION SELECT B.* FROM tonghua AS B INNER JOIN tonghua AS A ON A.ID = B.ID-1
3 WHERE  A.主叫号码=B.主叫号码 AND DATEDIFF(MINUTE,A.通话结束时间,B.通话起始时间)> 10

展开代码

1 select   a.*,b.*   from
2 tonghua   a,tonghua   b   where  b.id> a.id   and   b.id=(select   min(id)   from   tonghua   where  id> a.id
3 and   (a.主叫号码=b.主叫号码   or   a.主叫号码=b.被叫号码  or a.被叫号码=b.主叫号码   or   a.被叫号码=b.被叫号码))
4 and   DATEDIFF(minute,a.通话结束时间,b.通话起始时间)>=10
5 and   DATEDIFF(second,a.通话结束时间,b.通话起始时间)>=10

展开代码

以上是我认为正确的方法。

2、用一条select语句求出所有课程在80分(含80分)以上的学生姓名,请写出所有可行方案。

 1 use QQmdb
 2   go
 3  if OBJECT_ID(‘sc‘) is not null
 4     drop table sc
 5  create table sc
 6  (
 7   name char(10),
 8    kc char(10),
 9  score decimal(5,2)
10   )
11
12   insert into sc
13  values(‘张三‘,‘语文‘,80),
14        (‘张三‘,‘数学‘,81),
15        (‘张三‘,‘英语‘,100),
16      (‘李四‘,‘语文‘,90),
17       (‘李四‘,‘数学‘,80),
18        (‘李四‘,‘英语‘,70),
19       (‘王五‘,‘语文‘,100),
20        (‘王五‘,‘数学‘,100),
21        (‘王五‘,‘英语‘,79)

展开代码

以上是表的创建

1 select name from sc group by name having min(score)>=80

1 select name from sc where score >=80 group by name having COUNT(score)>=3  --先根分数大于80分的姓名分组,因为是3科,所以要分数count>3

展开代码

1 select distinct a.name from sc a,sc b, sc c where a.name=b.name and b.name=c.name and a.name=c.name and a.kc<>b.kc and a.kc<>c.kc and b.kc<>c.kc and a.score>=80 and b.score>=80 and c.score>=80

展开代码

1 select distinct name from sc where name not in (select name from sc where score<80) --不推荐用这种

展开代码

3、分别要求出每个team粉丝数最多的3个国家

fans(team,nationality,fanCount)

‘Barcelona‘,‘Germany‘,12000
‘Barcelona‘,‘Spain‘,18000
‘Barcelona‘,‘China‘,13000
‘Barcelona‘,‘USA‘,15000
‘Barcelona‘,‘Italy‘,11000
‘Real Madrid‘,‘France‘,19000
‘Real Madrid‘,‘Germany‘,13000
‘Real Madrid‘,‘USA‘,17000
‘Real Madrid‘,‘Korea‘,16000
‘Real Madrid‘,‘UK‘,12000

1 select * from fans 表 where
2 ( select count(*) from fans t2 where t1.team=t2.team
3   and t2.fanCount>=t1.fanCount ) <=3  --子查询较牺牲性能

展开代码

还有一些借书问题,根据书号,时间,做的一些查询。。。

时间: 2024-12-18 17:27:09

常见的sql面试题的相关文章

SQL常见的一些面试题(太有用啦)

SQL常见面试题 1.用一条SQL 语句 查询出每门课都大于80 分的学生姓名 name   kecheng   fenshu张三    语文       81张三     数学       75李四     语文       76李四     数学       90王五     语文       81王五     数学       100王五     英语       90 A: select distinct name from table where name not in (select

SQL面试题

有3个表S,C,SC S(SNO, SNAME)代表(学号,姓名) C(CNO,CNAME,CTEACHER)代表(课号,课名,教师) SC(SNO, CNO, SCGRADE)代表(学号,课号成绩) 问题: 1.找出没选过'黎明"老师的所有学生姓名. 2.列出两门以上(含2门)不及格学生姓名及平均成绩. 3.即学过1号课程有学过2号课所有学生的姓名. 请用标准SQL语言写出答案,方言也行(请说明是使用什么方言). 1.select sname from s join sc on (s.sno

sql面试题(学生表_课程表_成绩表_教师表)

sql面试题(学生表_课程表_成绩表_教师表) 原帖链接:http://bbs.csdn.net/topics/280002741 表架构 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 建表语句 CREATE TABLE student ( s# INT, sname nvarchar(32), sage INT, ssex nvarchar(8)

10个最常见的 HTML5 面试题及答案

10个最常见的 HTML5 面试题及答案 1.新的 HTML5 文档类型和字符集是? HTML5 文档类型很简单: HTML5 使用 UTF-8 编码 2.HTML5 中如何嵌入音频? HTML5 支持 MP3.Wav 和 Ogg 格式的音频,下面是在网页中嵌入音频 3.HTML5 中如何嵌入视频? 和音频类似,HTML5 支持 MP4.WebM 和 Ogg 格式的视频 4.除了 audio 和 video,HTML5 还有哪些媒体标签? HTML5 对于多媒体提供了强有力的支持,除了 audi

汽车之家一道SQL 面试题,大家闲来无事都来敲一敲

写在前面 上周去汽车之家面试,拿到这个SQL笔试题顿时感觉到有些陌生,因为好长时间不写SQL语句了,当时只写了表设计,示例数据和SQL语句都没写出来. 汽车之家应该用的SQL Server, 编程题一般都没有固定答案,大家可以按照自己的思路来试试,我在文章底部放出参考的链接. SQL笔试题 参考答案(我个人发在CSDN的帖子) http://bbs.csdn.net/topics/391091585

Android开发面试经——4.常见Android进阶笔试题(更新中...)

Android开发(29)  版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http://blog.csdn.net/finddreams/article/details/44301359 上一篇文章我们已经了解了Android笔试的一些基础题目, [<Android开发面试经——2.常见Android基础笔试题> ] (http://blog.csdn.net/finddreams/a

【转载】20道常见初级Java面试题

这篇文章的内容很不错.学到了很多东西.值得仔细琢磨. http://mt.sohu.com/20160831/n466900239.shtml 20道常见初级Java面试题,入职者必备! 广州华信智原2016-08-31 09:30:37阅读(564)评论(0) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场.举报 大家都应该知道Java是目前最火的计算机语言之一,连续几年蝉联最受程序员欢迎的计算机语言榜首,因此每年新入职Java程序员也数不胜数.究

Android开发面试经——3.常见Android进阶笔试题

关注finddreams博客:http://blog.csdn.net/finddreams/article/details/44301359 上一篇文章我们已经了解了Android笔试的一些基础题目,<Android开发面试经--2.常见Android基础笔试题> 但是做为一个有经验的开发者,仅仅知道基础题还是不够的,你的简历上说有两年以上工作经验的话,那面试官肯定会问一些深入性的问题,看你能否回答的出.所以为了找一个更好的工作,我们还需要去了解一下Android进阶的笔试题目: 1.什么是

sql面试题一 学生成绩

sql面试题一 学生成绩 原帖链接:http://topic.csdn.net/u/20081020/15/1ABF54D0-F401-42AB-A75E-DF90027CEBA0.html 表架构 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 建表语句 CREATE TABLE student ( s# INT, sname nvarchar(3