一、简单

175.组合两个表

编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:

select FirstName, LastName, City, State
from Person p
left join Address a on p.PersonId = a.PersonId;

176.第二高薪水

编写一个 SQL 查询,获取Employee 表中第二高的薪水(Salary) 。

例如上述 Employee 表,SQL查询应该返回 200作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回null

select max(Salary) as SecondHighestSalary
from Employee
where Salary < (select max(Salary) from Employee);

181.超过经理收入的员工

Employee 表包含所有员工,他们的经理也属于员工。每个员工都有一个 Id,此外还有一列对应员工的经理的 Id。

给定 Employee 表,编写一个 SQL 查询,该查询可以获取收入超过他们经理的员工的姓名。在上面的表格中,Joe 是唯一一个收入超过他的经理的员工。

select a.Name as Employee
from Employee a, Employee b
where a.ManagerId = b.Id and a.Salary > b.Salary;

182.查找重复的电子邮箱

编写一个 SQL 查询,查找 Person表中所有重复的电子邮箱。

根据以上输入,你的查询应返回以下结果:

select c.Email as Email
from
(select Email, count(Email) as co_email from Person group by Email) c
where c.co_email > 1;

183.从不订购的客户

某网站包含两个表,Customers 表和 Orders 表。编写一个 SQL 查询,找出所有从不订购任何东西的客户。

Customers 表:

Orders表:

例如给定上述表格,你的查询应返回:

select name as Customers
from(select c.Name as name, o.Id as OrderId from Customers c left join Orders o on c.Id = o.CustomerId) co
where OrderId is null;

196.删除重复的电子邮箱

编写一个 SQL 查询,来删除 Person 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。

例如,在运行你的查询语句之后,上面的Person表应返回以下几行:

DELETE p1
FROM Person p1,Person p2
WHEREp1.Email = p2.Email AND p1.Id > p2.Id;

197.上升的温度

给定一个Weather表,编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 Id。

例如,根据上述给定的Weather表格,返回如下 Id:

(1)TO_DAYS函数,用来将日期换算成天数

select w1.Id
from Weather w1, Weather w2
where w1.Temperature > w2.Temperature and TO_DAYS(w1.RecordDate) = TO_DAYS(w2.RecordDate) + 1;

(2)DataDiff函数计算两个日期的差值

select w1.Id
from Weather w1, Weather w2
where w1.Temperature > w2.Temperature and datediff(w1.RecordDate,w2.RecordDate) = 1;

(3)SUBDATE函数,实现日期减一

select w1.Id
from Weather w1, Weather w2
where w1.Temperature > w2.Temperature and subdate(w1.RecordDate,1) = w2.RecordDate;

596.超过5名学生的课

有一个courses 表 ,有: student (学生)class (课程)

请列出所有超过或等于5名学生的课。

例如,表:

应该输出:

Note:

学生在每个课中不应被重复计算。

select class
from(select class, count(distinct student) as numfrom coursesgroup by class) as c
where num >= 5;

620.有趣的电影

某城市开了一家新的电影院,吸引了很多人过来看电影。该电影院特别注意用户体验,专门有个 LED显示板做电影推荐,上面公布着影评和相关电影描述。

作为该电影院的信息部主管,您需要编写一个 SQL查询,找出所有影片描述为非 boring (不无聊) 的并且 id 为奇数 的影片,结果请按等级 rating 排列。

例如,下表 cinema:

对于上面的例子,则正确的输出是为:

select id, movie, description, rating
from cinema
where id%2 = 1 and description != 'boring'
order by rating desc;

627.交换工资

给定一个 salary 表,如下所示,有 m = 男性 和 f = 女性 的值。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求只使用一个更新(Update)语句,并且没有中间的临时表。

注意,您必只能写一个 Update 语句,请不要编写任何 Select 语句。

例如:

运行你所编写的更新语句之后,将会得到以下表:

UPDATE salary
SETsex = CASE sexWHEN 'm' THEN 'f'ELSE 'm'END;

1179.重新格式化部门表

部门表 Department

+---------------+---------+
| Column Name | Type |
+---------------+---------+
| id | int |
| revenue | int |
| month | varchar |
+---------------+---------+
(id, month) 是表的联合主键。
这个表格有关于每个部门每月收入的信息。
月份(month)可以取下列值 ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]。

编写一个 SQL 查询来重新格式化表,使得新的表中有一个部门 id 列和一些对应 每个月 的收入(revenue)列。

查询结果格式如下面的示例所示:

Department 表:
+------+---------+-------+
| id | revenue | month |
+------+---------+-------+
| 1 | 8000 | Jan |
| 2 | 9000 | Jan |
| 3 | 10000 | Feb |
| 1 | 7000 | Feb |
| 1 | 6000 | Mar |
+------+---------+-------+

查询得到的结果表:
+------+-------------+-------------+-------------+-----+-------------+

| id | Jan_Revenue | Feb_Revenue | Mar_Revenue | ... | Dec_Revenue |

+------+-------------+-------------+-------------+-----+-------------+

| 1 | 8000 | 7000 | 6000 | ... | null |

| 2 | 9000 | null | null | ... | null |

| 3 | null | 10000 | null | ... | null |

+------+-------------+-------------+-------------+-----+-------------+

SELECT id,SUM(CASE month WHEN 'Jan'  THEN revenue ELSE null END) AS 'Jan_Revenue',SUM(CASE month WHEN 'Feb'  THEN revenue ELSE null END) AS 'Feb_Revenue',SUM(CASE month WHEN 'Mar'  THEN revenue ELSE null END) AS 'Mar_Revenue',SUM(CASE month WHEN 'Apr'  THEN revenue ELSE null END) AS 'Apr_Revenue',SUM(CASE month WHEN 'May'  THEN revenue ELSE null END) AS 'May_Revenue',SUM(CASE month WHEN 'Jun'  THEN revenue ELSE null END) AS 'Jun_Revenue',SUM(CASE month WHEN 'Jul'  THEN revenue ELSE null END) AS 'Jul_Revenue',SUM(CASE month WHEN 'Aug'  THEN revenue ELSE null END) AS 'Aug_Revenue',SUM(CASE month WHEN 'Sep'  THEN revenue ELSE null END) AS 'Sep_Revenue',SUM(CASE month WHEN 'Oct'  THEN revenue ELSE null END) AS 'Oct_Revenue',SUM(CASE month WHEN 'Nov'  THEN revenue ELSE null END) AS 'Nov_Revenue',SUM(CASE month WHEN 'Dec'  THEN revenue ELSE null END) AS 'Dec_Revenue'
FROM Department
GROUP BY id;

sql 取一个月日期去掉周末的所有日期_LeetCode:SQL相关推荐

  1. sql 查询一个月的数据按天显示_数据分析-sql复杂查询

    视图 在数据库里面有很多表,表里面存放着实际数据.而视图里存放的是sql查询语句 -如何创建视图 create view 按性别汇总(性别,人数) as select 性别,count(*) from ...

  2. SQL中取一个月的数据的处理方式

    前提: 场景设置:表T,其中有属性date表示表中数据的更新时间. 问题:取一个月的数据:2015 年1月的数据. 取前一个月的数,当前月份未知. 一,取一个月的数据 对于知道确定月份的需求,SQL处 ...

  3. Oracle获取一周前,一个月前,一年前的日期,一个月的总天数、一个月的全部日期

    目的:Oracle获取一周前,一个月前,一年前的日期,一个月的总天数.一个月的全部日期 1.获取10分钟前的日期 select sysdate,sysdate-interval '10' minute ...

  4. Oracle获取一周前,一个月前,一年前的日期

    ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02   13:45:25为例)             Year:               yy two digits ...

  5. sql上一个月和下一个月

    select  sysdate-1 昨日,sysdate 今日,sysdate+1 明日 from dual; select sysdate,sysdate- interval '1' month f ...

  6. oracle获取当前年上一年时间,Oracle获取一周前,一个月前,一年前的日期

    1.获取当前时间一周前的日期 select sysdate - interval '7' day from dual 类似的 当前时间减去7分钟的时间 select sysdate,sysdate - ...

  7. 使用SQL统计一个月每天数据

    1.查某个月每天的数据 a.查询某个月每天的日期 SELECT DATE_ADD(DATE_ADD(DATE_ADD(LAST_DAY(STR_TO_DATE('2021-09-06', " ...

  8. Hive-SQL取一个月用户留存率、留存用户数

    一.最基础版-次日留存率 代码如下: select date,count(*)/count(B.user_id) as rate from (selectuser_id,datefrom app_la ...

  9. 【SQL取数练习,入门篇】牛客网SQL入门板块个人练习,含sql文件,复习必备

    文章目录 数据表介绍1: 练习1:入门(简单) 数据表介绍2: 练习2:入门(基础) 入门(文本) 数据表介绍1: 用户信息表:user_profile 其中device_id指终端编号(每个用户有唯 ...

  10. js获取上一个月、下一个月

    /*** 获取上一个月** @date 格式为yyyy-mm-dd的日期,如:2014-01-25*/function getPreMonth(date) {var arr = date.split( ...

最新文章

  1. oracle 查询、创建、删除 数据库用户
  2. [BizTalk] 短消息处理流程
  3. python turtle画椭圆-【python turtle如何画椭圆】
  4. Android-获取窗口的宽度与高度
  5. CentOS7 安装 Gitlab
  6. 推荐搜索炼丹笔记:双塔模型在Airbnb搜索排名中的应用
  7. 每个人都有一条属于自己的路,既然来了这个世间,就好好的修炼好就行了!无须担忧...
  8. html vue分页,Vue.js bootstrap前端实现分页和排序
  9. 一步步编写操作系统 61 任务状态段 TSS
  10. 为什么git的“ pull request”不称为“ push request”?
  11. 论文阅读笔记(二)——Xception
  12. 常见职位的英文简称_英语面试常见的50大问题及应对技巧
  13. java程序如何提取数据库json格式_java解析json格式文件,再保存在数据库怎么做?...
  14. 【Java就业培训教程】——单态设计模式
  15. 3d打印切片软件 linux,3D打印切片软件汇总分类
  16. 信息技术测试计算机疑难问题处理,江苏省中小学信息技术等级考试常见问题处理.doc...
  17. SaaS公司投资分析时,MRR比ARR指标更有用 | 投资人说
  18. Ext Gantt甘特图1.2破解及方法
  19. RK3326 android10.0(Q) 系统精简瘦身
  20. Ext js 下拉框模糊匹配查询,并支持反复输入检索

热门文章

  1. 【UML】概念、关联、画画(一)
  2. Day1_HTML_表单标记
  3. java基础——浅析设计模式之单例模式
  4. 【翻译】3D Bounding Box Estimation Using Deep Learning and Geometry
  5. Java多线程实现-Runnable接口
  6. 最常见30种NLP任务练手项目汇总
  7. 区块链教程Fabric1.0源代码分析putils(protos/utils工具包)
  8. 【转】HBase架构解析
  9. Linux slab分配器【转】
  10. mysql max 函数的陷阱