IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> LeetCode-MySQL -> 正文阅读

[大数据]LeetCode-MySQL

第二高成绩

select ifnull((
select distinct Salary
from Employee
order by Salary desc limit 1,1),null) as SecondHighestSalary 

上升的温度

select t1.id 
from Weather t1
join Weather t2 on t1.temperature > t2.temperature and datediff(t1.RecordDate,t2.RecordDate) = 1

日期函数

select DATE_ADD(datetime,interval -1 month) from Employee

select date_sub(datetime,interval 2 month) from Employee

select datediff(datetime,DATE_SUB(datetime,interval 1 month)) from Employee

select timediff(datetime,DATE_SUB(datetime,interval 1 day)) from Employee

select DATE_FORMAT(datetime,'%Y:%m:%d') from Employee

select str_to_date('2008-01-01', '%Y-%d-%m'); 

select '2021-01-01'::timestamp + '1 year'
select '2021-01-01'::timestamp + '-1 year'
select '2021-01-01'::timestamp + interval '1 year'
select '2021-01-01'::timestamp - interval '1 year'
select date_part('day',cast('2022-03-01' as timestamp) - cast('2021-02-01' as timestamp)) 
select to_char('2021-01-01'::timestamp,'YYYY-MM-DD') 
select '2021-01-01'::timestamp

update做条件修改

# 1.
update salary
set sex = (
    case sex when 'm' then 'f' else 'm' end
);

# 2.
update salary set sex = if(sex='m','f','m');

MySQL实现dense_rank() over()

SELECT Score, 
    (SELECT count(DISTINCT Score) FROM Scores WHERE Score >= s.Score) AS 'Rank'
FROM Scores s
ORDER BY Score DESC;

SELECT Score,dense_rank() over(ORDER BY Score DESC)
FROM Scores;

互换座位

若为奇数,则最后一个不变

--表中包括ID和student
--互换座位的话,可分为两种,一是调整student的位置,二是将ID和student作为整体调整最后再排序
--调整student的话,可能不太方便,这里将ID和student作为一个整体进行调整
select 
--首先满足奇数的,并且id最大的一个是不需要调整的
(case when mod(id,2) = 1 and id = (select max(id) from Seat) then id
--除了最大的奇数,其余技术都ID增1,方便与其余的数据做交换
when mod(id,2) = 1 then id + 1
--其余的,也就是偶数的ID,需要减1,实现与奇数的增1做位置交换
else id -1 end ) as id , student
from Seat
--ID变动后,已经乱序,所以这里需要对其进行升序排序
order by id 

行程和用户

表:Trips

+-------------+----------+
| Column Name | Type     |
+-------------+----------+
| id          | int      |
| client_id   | int      |
| driver_id   | int      |
| city_id     | int      |
| status      | enum     |
| request_at  | date     |     
+-------------+----------+
id 是这张表的主键。
这张表中存所有出租车的行程信息。每段行程有唯一 id ,其中 client_id 和 driver_id 是 Users 表中 users_id 的外键。
status 是一个表示行程状态的枚举类型,枚举成员为(‘completed’, ‘cancelled_by_driver’, ‘cancelled_by_client’) 。

表:Users

+-------------+----------+
| Column Name | Type     |
+-------------+----------+
| users_id    | int      |
| banned      | enum     |
| role        | enum     |
+-------------+----------+
users_id 是这张表的主键。
这张表中存所有用户,每个用户都有一个唯一的 users_id ,role 是一个表示用户身份的枚举类型,枚举成员为 (‘client’, ‘driver’, ‘partner’) 。
banned 是一个表示用户是否被禁止的枚举类型,枚举成员为 (‘Yes’, ‘No’) 。

 

取消率 的计算方式如下:(被司机或乘客取消的非禁止用户生成的订单数量) / (非禁止用户生成的订单总数)。

写一段 SQL 语句查出 "2013-10-01" 至 "2013-10-03" 期间非禁止用户(乘客和司机都必须未被禁止)的取消率。非禁止用户即 banned 为 No 的用户,禁止用户即 banned 为 Yes 的用户。

返回结果表中的数据可以按任意顺序组织。其中取消率 Cancellation Rate 需要四舍五入保留 两位小数 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/trips-and-users
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

-- 分析
-- 1. 
-- 被司机或者乘客取消的非禁止用户生成的订单数量/非禁止用户生成的订单总数
-- user.banned = no and (Trips.status=cancelled_by_driver or Trips.status=cancelled_by_client)
-- user.banned = no
-- 2.
-- request_at between ('2013-10-01','2013-10-03')

-- 具体实现
select request_at as 'Day'
,round(avg(Status!='completed'), 2) as 'Cancellation Rate'
from Trips t1
inner join Users t2 on t1.client_id = t2.users_id  and t2.banned != 'YES'
inner join Users t3 on t1.driver_id = t3.users_id  and t3.banned != 'YES'
where request_at between '2013-10-01' and '2013-10-03' 
group by request_at
order by request_at

-- 值得吐槽的一点,在提交的时候因为别名不一致,一直提交运行失败
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-16 22:27:35  更:2022-03-16 22:30:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:41:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码