请选用MySQL进行测试.

1.将男性和女性的工资互换(E)

思路:使用case when进行条件判断,在使用update进行修改

 update salary
set sex =
case sex
when 'm' then 'f'
else 'm'
end

2.找出description不是boring且id是奇数的电影(E)

思路:使用where字句进行筛选,并且使用mod进行奇数偶数的判定

 select id,movie,description,rating
from cinema
where description != 'boring'
and mod(id,2) = 1
order by rating desc

3.找出不销售Red厂家的推销员(E)

思路:使用子查询先找出销售RED厂家的销售员id,在将外层查询进行not in

 select name
from salesperson
where sales_id not in(
select sales_id
from orders o join company c
on o.com_id = c.com_id
and c.name = 'RED'
)

4.找出数据库中相同的行(E)

思路:使用子查询对内层查询按照Email进行分组,统计出大于1的就是重复的值

 select Email from
(
select Email,count(*) as num from Person group by Email
) as sub
where num>1

5.删除相同的数据(E)

思路:找到两张表相同的Email但是不同的id,把这行数据进行删除

 delete p1 from Person p1,Person p2
where p1.Email = p2.Email
and p1.id > p2.id

6.找出经度和纬度不同的2016年的投资金额总和

思路:找出2015年投资相同的记录数,再将经度,维度作为分组的条件进行连接,最后查出结果

select sum(insurance.TIV_2016) as tiv_2016
from insurance
where insurance.TIV_2015 in
(
select TIV_2015
from insurance
group by TIV_2015
having count(*) > 1
)
and concat(lat,lon) in
(
select concat(lat,lon)
from insurance
group by lat,lon
having count(*) =1
)

7.找出部门平均工资和公司平均工资的高低

 思路:计算公司每月的平均薪水,计算部门每月的平均薪水,然后进行比较

select department_sal.pay_month,department_id,
case
when department_avg > company_avg then 'higher'
when department_avg < company_avg then 'lower'
else 'same'
end as comparison
from
(
select department_id,avg(amount) as department_avg,date_format(pay_date,'%Y-%m') as pay_month
from salary join employee
on salary.employee_id = employee.employee_id
group by department_id,pay_month
) as department_sal
join
(
select avg(amount) as company_avg,date_format(pay_date,'%Y-%m') as pay_month
from salary
group by pay_month
) as company_sal
on department_sal.pay_month = company_sal.pay_month

8.找出谁是facebook上最受欢迎的人

  思路:根据request_id和accepter_id,可知3收到两个accept,发送一个request,所以3才是社交最活跃的,采用union all将requester_id,sender_id集合起来,分组才能找到使用最频繁的用户

 select ids as id,cnt as num
from
(
select ids,count(*) as cnt
from
(
select requester_id as ids from request_accepted
union all
select accepter_id from request_accepted
) as tb1
group by ids
) as tb2
order by num desc
limit 1

 9.找出followee和follower

  思路:B和D都在follower中,B的Follower是C,D,A不在follower中,D的follower是E

 select f1.follower,count(distinct f2.follower) as num
from follow f1 join follow f2
on f1.follower = f2.followee
group by f1.follower

10.找出体育馆人数大于100且连续的天数大于3天的数据

  思路:先找出所有大于100人的条件,在使用3次自连接,根据t1,t2,t3的id来进行排序

 select distinct t1.*
from stadium t1,stadium t2,stadium t3
where t1.people >= 100 and t2.people >= 100 and t3.people >= 100
and
(
(t1.id-t2.id = 1 and t1.id-t3.id = 2 and t2.id-t3.id = 1)
or
(t2.id-t1.id = 1 and t2.id-t3.id = 2 and t1.id-t3.id = 1)
or
(t3.id-t2.id = 1 and t2.id-t1.id = 1 and t3.id-t1.id = 2)
)
order by t1.id

SQL查询练习二(From LeetCode)的更多相关文章

  1. SQL查询(二)

    常用查询技巧 1.获取数据的前3(n)行 ; 2.SQL语句中if语句 在SQL语句中没有直接的if语句,但是有两个函数:DECODE和CASE,他们能够实现if语句的功能 2.1)decode -- ...

  2. SQL查询练习一(From LeetCode)

     请选用MySQL进行测试. 1.找出后一天比前一天温度高的日期(E) 思路:将该表进行自关联,然后选择出日期靠后的一天,最后选择温度高的日期 select Weather.Id from Weath ...

  3. SQL总结(二)连表查询

    ---恢复内容开始--- SQL总结(二)连表查询 连接查询包括合并.内连接.外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要. 只有真正了解它们之间的区别,才能正确使用. 1.Union ...

  4. SQL基础--查询之二--连接查询

    SQL基础--查询之二--连接查询

  5. SQL入门经典(二) 之数据库基本查询、添加、更新和删除

    使用SQL查询: SQL查询基本语法: SELECT [ALL|DISTINCT]  [TOP (<expression>) [PERCENT] [WITH TIES] ] <col ...

  6. SQL Server-聚焦深入理解动态SQL查询(三十二)

    前言 之前有园友一直关注着我快点出SQL Server性能优化系列,博主我也对性能优化系列也有点小期待,本来打算利用周末写死锁以及避免死锁系列的接着进入SQL Server优化系列,但是在工作中长时间 ...

  7. SQL开发技巧(二)

    本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列文章基于SQLServer系列,且版本为SQLServer2005及以上-- 文章系列目录 SQL开发技巧(一) SQL开 ...

  8. Oracle常用SQL查询(2)

    三.查看数据库的SQL 1 .查看表空间的名称及大小 select  t.tablespace_name,  round ( sum (bytes / ( 1024 * 1024 )), 0 ) ts ...

  9. Thinkphp查询 1.查询方式 2.表达式查询 3.快捷查询 4.区间查询 5.组合查询 6.统计查询 7.动态查询 8.SQL 查询

    1.使用字符串作为条件查询 $user = M('User'); var_dump($user->where('id=1 AND user="蜡笔小新"')->sele ...

随机推荐

  1. Linux下图解minicom安装

    Linux下图解minicom安装 minicom是一个串口通信工具,就像Windows下的HyperTerminal.可用来与串口设备通信,如调试交换机和Modem等.它的Ubuntu软件包的名称就 ...

  2. Python(七) 高级部分:面向对象

    一.类的定义 # 面向对象 #有意义的面向对象代码 # 类 = 面向对象 # 类.对象 #实例化 # 类最基本的作用:封装 class Student(): name = '' age = 0 def ...

  3. VirtualBox中Linux虚拟机与主机共享文件夹

    VirtualBox中Linux虚拟机与主机共享文件夹 一.Linux虚拟机安装增强功能 二.点击虚拟机 设置-->选择 共享文件夹-->点击右侧的带加号的文件夹图标,执行下面的操作1. ...

  4. vi命令常用操作

    一.vi的操作模式  vi提供两种操作模式:输入模式(insert mode)和指令模式(command mode).在输入模式下,用户可输入文本资料.在指令模式下,可进行删除.修改等各种编辑动作.  ...

  5. Python基础班培训视频课程

    课程目录:│  ├─第01天视频│  │      01-课程介绍.avi│  │      02-什么是操作系统.avi│  │      03-生活中的操作系统.avi│  │      04-操 ...

  6. Alcatraz:管理Xcode插件

    简单介绍 Alcatraz是一个帮你管理Xcode插件.模版以及颜色配置的工具. 它能够直接集成到Xcode的图形界面中,让你感觉就像在使用Xcode自带的功能一样. 安装和删除 使用例如以下的命令行 ...

  7. 矩阵乘法2(codevs3147)

    题目描写叙述 Description 给出两个n*n的矩阵.m次询问它们的积中给定子矩阵的数值和. 输入描写叙述 Input Description 第一行两个正整数n,m. 接下来n行,每行n个非负 ...

  8. HDU 4173 Party Location(计算几何,枚举)

    HDU 4173 题意:已知n(n<=200)位參赛选手的住所坐标.现要邀请尽可能多的选手来參加一个party,而每一个选手对于离住所超过2.5Km的party一律不去,求最多能够有多少个选手去 ...

  9. CSS Text

    http://www.runoob.com/css/css-text.html 文本颜色 颜色属性被用来设置文字的颜色. 颜色是通过CSS最经常的指定: 十六进制值 - 如: #FF0000 一个RG ...

  10. onvif开发总结

    ONVIF开发经验总结 ONVIF开发经验总结............................................................................. ...