一些sql语句的练习题及解答
来源:互联网 发布:淘宝网店宝贝图片尺寸 编辑:程序博客网 时间:2024/05/22 04:56
表内容:
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
udate是日期,uname是胜负。
case搜索函数
SELECT udate,
SUM(case when uname='胜' then 1 else 0 end)胜,
SUM(case when uname='负' then 1 else 0 end)负 FROM no1 GROUP BY udate
简单case函数
SELECT udate,
SUM(case uname when '胜' then 1 else 0 end)胜,
SUM(case uname when '负' then 1 else 0 end)负 FROM no1 GROUP BY udate
简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制。
表中有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 no2
3.面试题:一个日期判断的sql语句?
请取出tb_send表中日期(SendTime字段)为当天的所有记录?(SendTime字段为datetime型,包含日期与时间)
SELECT * FROM tb_send
WHERE datediff(date_format(SendTime,'%Y-%m-%d'),curdate())=0
datediff(a,b)返回两个参数之间天数,date_format(c,d)给c初始化定义时间格式d,
curdate()返回当前日期
4.有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路):
大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。
显示格式:
语文 数学 英语
及格 优秀 不及格
SELECT (CASE WHEN chinese>=80 THEN "优秀" WHEN chinese>=60 THEN "及格" ELSE "不及格" END),
(CASE WHEN math>=80 THEN "优秀" WHEN math>=60 THEN "及格" ELSE "不及格" END),
(CASE WHEN english>=80 THEN "优秀" WHEN english>=60 THEN "及格" ELSE "不及格" END)
FROM no4
有一个case问题特意留到这道题来说,
case when then else end SQL语句相当于if(){} else{} ,when条件判断,如果条件成立直接返回结果,比如上题 :
如果你就想让60分及格先判断,80后判断,那就得让60判断条件写成
60<=chinese<80 ---->when 60<=chinese<80 then....
5、表形式如下:
Year Salary
2000 1000
2001 2000
2002 3000
2003 4000
想得到如下形式的查询结果
Year Salary
2000 1000
2001 3000
2002 6000
2003 10000
sql语句怎么写?
想SQL语句首先要明白数学原理,这样就事半功倍了。
salary=上面的+本身
上面的怎么拿 :t2.year当前Year , t1<=t2。
SELECT t2.`Year`,SUM(t1.Salary)
FROM no5 t1,no5 t2 WHERE t1.`Year`<=t2.`Year`
GROUP BY t2.`Year`
6.用一条SQL语句查询出每门课都大于80分的学生姓名
name kecheng fenshu
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 语文 81
王五 数学 100
王五 英语 90
SELECT DISTINCT `name` FROM no6 GROUP BY `name` HAVING MIN(fenshu>=80)
DISTINCT去重
7、学生表 如下:
自动编号 学号 姓名 课程编号 课程名称 分数
1 2005001 张三 0001 数学 69
2 2005002 李四 0001 数学 89
3 2005001 张三 0001 数学 69
删除除了自动编号不同,其他都相同的学生冗余信息
delete no7 where uid not in(select min(uid) from no7group by xuehao,uname,kebian,kecheng,fenshu)
in是在什么什么范围中,on是起连接作用。
8、面试题:怎么把这样一个表儿
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
查成这样一个结果
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`,
max(case month when 1 then amount else 0 end) as 'm1' ,
max(case month when 2 then amount else 0 end) as 'm2' ,
max(case month when 3 then amount else 0 end) as 'm3' ,
max(case month when 4 then amount else 0 end) as 'm4'
from no8 group by `year`
普通查询给内存压力,case查询给CPU压力,两者差别不大。
以上所述,有什么不同的建议可以私信联系,谢谢大家。
- 一些sql语句的练习题及解答
- 很好的SQL语句强化练习题及答案
- Oracle的sql语句练习题
- SQL语句强化练习题及答案
- SQL语句强化练习题及答案
- 一些常识及很棒的sql语句
- String重点、练习题及解答
- Oracle的sql语句练习题含答案
- Oracle的sql语句练习题含答案
- Oracle的sql语句练习题含答案
- Oracle的sql语句练习题含答案
- oracle的sql语句的练习题及答案(学生表+老师表+课程表+分数表)
- oracle的sql语句的练习题及答案(员工表+部门表)
- SQL语句练习题
- SQL语句练习题
- SQL语句练习题
- SQL语句练习题
- SQL语句练习题
- Spring源码-IOC(三)
- echarts 多个series图表的tooltip自定义
- 7-11 畅通工程之局部最小花费问题(最小生成树+并查集)
- python 利用utf-8编码判断中文英文字符
- sql 批量插入(一个数据库的表数据,添加到另一个数据库表) 数据类型nText和varchar在运算符equals不兼容的问题解决方案
- 一些sql语句的练习题及解答
- Linux根目录下重要目录的作用
- django 分页效果实现(djangorestframework内置以及django内置方法)
- 有趣有料的英语
- HTML5 初始之旅
- 在数组中寻找连续子数组和最大值
- [简单日记]服务层通用post请求
- nodejs连接池连接mysql数据库
- 机器学习模型训练测试完整步骤