Mysql有用的面试题

Mysql有用的面试题,Mysql有用面试题

A.一道SQL语句面试题,关于group by
表内容:
2005-05-09 胜
2005-05-09 胜
2005-05-09 负
2005-05-09 负
2005-05-10 胜
2005-05-10 负
2005-05-10 负

借使要生成下列结果, 该如何写sql语句?

胜 负
2005-05-09 2 2
2005-05-10 1 2
******************************************************
create table #tmp(rq varchar(10),shengfu nchar(1))

insert into #tmp values(‘2005-05-09′,’胜’)
insert into #tmp values(‘2005-05-09′,’胜’)
insert into #tmp values(‘2005-05-09′,’负’)
insert into #tmp values(‘2005-05-09′,’负’)
insert into #tmp values(‘2005-05-10′,’胜’)
insert into #tmp values(‘2005-05-10′,’负’)

1.一道SQL语句面试题,关于group
by 表内容:

insert into #tmp values(‘2005-05-10′,’负’)

SELECT rq,sum(shengfu=’胜’) as ‘胜’,sum(shengfu=’负’) as ‘负’
FROM `#tmp`
GROUP BY `#tmp`.rq
*****************************************************************

B.请教1个面试中相见的SQL语句的询问难点
表中有A B

2005-05-09 胜

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 esle c end)
from taname
***************************************************

C.面试题:2个日期判别的sql语句?

2005-05-09 胜

请取出tb_send表中国和日本期(SendTime字段)为当天的有所记录?(SendTime字段为datetime型,包涵日期与时光)

select * from time where datediff(SendTime,CURDATE())=0

CU本田CR-VDATE()获取当前些天子
DATEDIFF() 重临先河时间 expr和竣事作时间间expr2之间的天命。Expr和expr二为日期或 date-and-time 表明式。总结中只用到这么些值的日子部分。

TIMEDIFF(expr,expr2)
TIMEDIFF() 再次来到开端时间 expr 和终结时间expr二 之间的岁月。 expr 和expr二为时间或 date-and-time 表明式,八个的档期的顺序必须1律。
**************************************************************************************************************************

D.有一张表,里面有3个字段:语文,数学,斯洛伐克(Slovak)语。个中有三条记下分别表示语文六18分,数学八十几分,意大利语陆15分,请用一条sql语句询问出这叁条记下并按以下规则显得出来(并写出您的思绪):
出乎或等于80象征优良,大于或等于60代表及格,小于56分表示不比格。
展现格式:
语文 数学 英语

2005-05-09 负

及格 优秀 不及格

壹、一定有分叁类,语文、数学、希伯来语
二、对查询到的分数进行决断
三、先摸清三个字段展现
SELECT
CASE WHEN
yuwen >= ’80’ THEN’优秀’WHEN yuwen >=’60’
THEN’及格’ELSE’不及格’END yuwen,
CASE WHEN
shuxue >= ’80’ THEN’优秀’WHEN shuxue >=’60’
THEN’及格’ELSE’不及格’END shuxue,
CASE WHEN
yingyu >= ’80’ THEN’优秀’WHEN yingyu >=’60’
THEN’及格’ELSE’不及格’END yingyu
FROM
kecheng

E.请用叁个sql语句得出结果
从table一,table第22中学抽出如table三所列格式数据,注意提供的数量及结果不准确,只是当作多少个格式向我们请教。
如采纳存储进程也能够。

table1

2005-05-09 负

月份mon 部门dep 业绩yj

一月份 01 10
一月份 02 10
一月份 03 5
二月份 02 8
二月份 04 9
三月份 03 8

table2

2005-05-10 胜

单位dep 部门名称dname

0一 国内事务1部
0贰 国内专门的学业贰部
03 国内工作叁部
04 国际业务部

table3 (result)

2005-05-10 负

部门dep 一月份 二月份 三月份

01         10       null    null
02         10       8       null
03         null      5          8

2005-05-10 负
若果要生成下列结果, 该怎么写sql语句?
           胜 负

04         null     null       9

select a.dname, 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 ‘三月份’
from table2 a left join table1 b on a.dep=b.dep
GROUP BY
a.dep

 

 

F.壹道面试题

2005-05-09 2 2

3个表中的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

G、table表情势如下:
Year Salary
2000 1000
2001 2000
2002 3000
2003 4000
想博得如下格局的询问结果
Year Salary
2000 1000
2001 3000
2002 6000
2003 10000
sql语句怎么写?
****************************************
SELECT a.year, SUM(b.salary) AS sala
FROM table AS a,table AS b
WHERE b.salary<=a.salary
GROUP BY a.salary
***************************************************
H.用一条SQL语句询问出每门课都大于78分的学生姓名
name kecheng fenshu
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90

****************************************************************************
selet name from tablename where name in (select name from tablename
where fenshu >80 )
select distinct name from table where name not in (select distinct name
from table where fenshu<=80)

 

**************************************************
I.学生表 如下:
活动编号 学号 姓名 课程编号 课程名称 分数
1 2005001 张三 0001 数学 69
2 2005002 李四 0001 数学 89
3 2005001 张三 0001 数学 69
删除除了活动编号差异,其余都一样的上学的小孩子冗余消息
*******************************************************
delete tablename where 自动编号 not in() 能运行
select min(自动编号) from tablename group by
学号,姓名,课程编号,课程名称,分数 能运作
delete tablename where 自动编号 not in(select min(自动编号) from
tablename group by 学号,姓名,课程编号,课程名称,分数 )

运作不了。会报《 You can’t specify target table ‘tb’ for update in FROM

2005-05-10 1 2

clause》那样的荒谬

J.1个叫department的表,里面唯有二个字段name,一共有四条纪录,分别是a,b,c,d,对应多少个球对,未来八个球对张开比赛,用一条sql语句展现全数非常大也许的交锋组合.


你先按您自身的主见做一下,看结果有自个儿的这几个轻便吗?

答:select a.name, b.name
from team a, team b
where a.name < b.name

********************************************************************************************************************************
K.请用SQL语句实现:从TestDB数据表中询问出装有月份的发生额都比十一科目相应月份的发生额高的学科。请留意:TestDB中有那一个科目,都有壹-5月份的发生额。
AccID:科目代码,Occmonth:发生额月份,DebitOccur:爆发额。
数据库名:Jcy奥迪(Audi)t,数据集:Select * from TestDB

答:select a.*
from TestDB a
,(select Occmonth,max(DebitOccur) Debit101ccur from TestDB where
AccID=’101′ group by Occmonth) b
where a.Occmonth=b.Occmonth and a.DebitOccur>b.Debit101ccur

 

************************************************************************************
L.面试题:怎么把那样二个表儿
year month amount
1991 1 1.1
1991 2 1.2
1991 3 1.3
1991 4 1.4
1992 1 2.1
1992 2 2.2
1992 3 2.3
1992 4 2.4
查成那样2个结出
year m1 m2 m3 m4
1991 1.1 1.2 1.3 1.4
1992 2.1 2.2 2.3 2.4

******************************************************
答案一、
select year,
(select amount from aaa m where month=1 and m.year=aaa.year) as m1,
(select amount from aaa m where month=2 and m.year=aaa.year) as m2,
(select amount from aaa m where month=3 and m.year=aaa.year) as m3,
(select amount from aaa m where month=4 and m.year=aaa.year) as m4
from aaa group by year

这个是ORACLE 中做的:
select * from (select name, year b1, lead(year) over
(partition by name order by year) b2, lead(m,2) over(partition by name
order by year) b3,rank()over(
partition by name order by year) rk from t) where rk=1;

A.一道SQL语句面试题,关于group by 表内容: 2005-05-0玖 胜 200伍-0五-0玖 胜
二〇〇七-05-0玖 负 二〇〇七-05-0九 负 200五-0伍-10 胜 二…

create table #tmp(rq
varchar(10),shengfu nchar(1))
insert into #tmp values(‘2005-05-09′,’胜’)

insert into #tmp
values(‘2005-05-09′,’胜’)

网站地图xml地图