常见大厂面试题(SQL)01

知乎问答最大连续回答问题天数大于等于3天的用户及其对应等级

1.描述

现有某乎问答创作者信息表author_tb如下(其中author_id表示创作者编号、author_level表示创作者级别,共1-6六个级别、sex表示创作者性别):

author_id   

author_level

sex

101

6

m

102

1

f

103

1

m

104

3

m

105

4

f

106

2

f

107

2

m

108

5

f

109

6

f

110

5

m

创作者回答情况表answer_tb如下(其中answer_date表示创作日期、author_id指创作者编号、issue_id指回答问题编号、char_len表示回答字数):

answer_date

author_id

issue_id

char_len

2023-11-01

101

E001

150

2023-11-01

101

E002

200

2023-11-01

102

C003

50

2023-11-01

103

P001

35

2023-11-01

104

C003

120

2023-11-01

105

P001

125

2023-11-01

102

P002

105

2023-11-02

101

P001

201

2023-11-02

110

C002

200

2023-11-02

110

C001

225

2023-11-02

110

C002

220

2023-11-03

101

C002

180

2023-11-04

109

E003

130

2023-11-04

109

E001

123

2023-11-05

108

C001

160

2023-11-05

108

C002

120

2023-11-05

110

P001

180

2023-11-05

106

P002

45

2023-11-05

107

E003

56

请你统计最大连续回答问题的天数大于等于3天的用户及其等级(若有多条符合条件的数据,按author_id升序排序),以上例子的输出结果如下:

author_id

author_level

days_cnt

101

6

3

数据导入

drop database if exists db_1;
create database db_1;
use db_1;drop table if exists author_tb;
CREATE TABLE author_tb
(author_id    int(10) NOT NULL,author_level int(10) NOT NULL,sex          char(10) NOT NULL
);
INSERT INTO author_tb   
VALUES (101, 6, 'm'),(102, 1, 'f'),(103, 1, 'm'),(104, 3, 'm'),(105, 4, 'f'),(106, 2, 'f'),(107, 2, 'm'),(108, 5, 'f'),(109, 6, 'f'),(110, 5, 'm');drop table if exists answer_tb;
CREATE TABLE answer_tb
(answer_date date     NOT NULL,author_id   int(10) NOT NULL,issue_id    char(10) NOT NULL,char_len    int(10) NOT NULL
);INSERT INTO answer_tb
VALUES ('2021-11-1', 101, 'E001', 150),('2021-11-1', 101, 'E002', 200),('2021-11-1', 102, 'C003', 50),('2021-11-1', 103, 'P001', 35),('2021-11-1', 104, 'C003', 120),('2021-11-1', 105, 'P001', 125),('2021-11-1', 102, 'P002', 105),('2021-11-2', 101, 'P001', 201),('2021-11-2', 110, 'C002', 200),('2021-11-2', 110, 'C001', 225),('2021-11-2', 110, 'C002', 220),('2021-11-3', 101, 'C002', 180),('2021-11-4', 109, 'E003', 130),('2021-11-4', 109, 'E001', 123),('2021-11-5', 108, 'C001', 160),('2021-11-5', 108, 'C002', 120),('2021-11-5', 110, 'P001', 180),('2021-11-5', 106, 'P002', 45),('2021-11-5', 107, 'E003', 56);select * from author_tb;select * from answer_tb;

解题思路

实现代码

with t1 as (-- 1 去重selectauthor_id,answer_date,-- 2 排名row_number() over (partition by author_id order by answer_date) as rn,-- 3 差值 = 日期 - 排名date_sub(answer_date, interval (row_number() over (partition by author_id order by answer_date)) day) as difffrom answer_tbgroup by answer_date, author_id
)
selectauthor_id,(select t2.author_level from author_tb t2 where t2.author_id=t1.author_id) author_level,count(1) days
from t1
group by author_id, diff
having count(1)>=3
order by author_id asc
;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/645173.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

命令行vue-cli-service不是内部或外部命令

没有安装vue/cli-service导致的 npm install -g vue/cli-service

背靠TON公链的Notcoin游戏项目,能否杀出GameFi的红海?

4月15日消息,Telegram生态中的游戏及Meme项目Notcoin,最近在X平台公布了令市场瞩目的代币经济学方案。据悉,NOT的总供应量高达1027亿枚,其中78%将分配给矿工和Voucher持有者,余下的22%预留给未来新用户、交易者及各类上…

MAC用户福利:一站式电商客服工具下载地址大全揭秘!

列举和比较拼多多商家版,阿里卖家MAC版本,京麦工作台,聊天宝MAC版,千牛MAC版,抖店MAC版各种适用于MAC系统的电商客服工具,提供平台MAC版本的下载地址,帮助用户提高客服效率、改善客户体验,从而提…

ROS通信模式/动作编程(设置收发节点,使小海龟移动到指定位置)

声明:本文转载,自己进行微微改动方便自己观看,有需要可以看原作者点击这里跳转 一、话题、服务模式编程 1.1 创建工作空间 输入以下三条命令: mkdir -p ~/comm_ws/src cd ~/comm_ws/src catkin_init_workspace编译工作空间&…

了解MySQL InnoDB多版本MVCC(Multi-Version Concurrency Control)

了解MySQL InnoDB多版本MVCC(Multi-Version Concurrency Control) 在数据库管理系统中,多版本并发控制(MVCC)是一种用于实现高并发和事务隔离的技术。MySQL的InnoDB存储引擎支持MVCC,这使得它可以在提供高…

U盘乱码频发,原因与解决方案大揭秘

在日常的工作和生活中,U盘因其便携性和大容量成为了我们不可或缺的存储设备。然而,有时候我们会遭遇U盘乱码的问题,这让我们无法正确读取和使用其中的文件。那么,U盘乱码究竟是何原因导致的呢?又该如何解决这一问题呢&…

如何诊断并解决PostgreSQL中的磁盘空间不足问题?

文章目录 诊断磁盘空间不足问题1. 检查服务器磁盘空间2. 检查PostgreSQL数据目录大小3. 检查PostgreSQL中的大表和大对象 解决磁盘空间不足问题1. 清理不必要的文件和日志2. 清理或压缩大表和大对象3. 扩展磁盘容量4. 优化数据库配置和查询 在使用PostgreSQL数据库时&#xff0…

android studio 设备框 一直显示灰色 loading devices 解决办法

问题: 解决办法: 把sdk manger自动下载的platform-tools删除。然后去谷歌官网下载老版本的platform-tools,然后解压,放刚才删掉的地方即可 这里我给出2个 最新可用老版本下载地址:https://dl.google.com/android/repo…

华为机考入门python3--(18)牛客18- 识别有效的IP地址和掩码并进行分类统计

分类:字符串 知识点: 字符串是否由数字组成 my_str.isdigit() 字符串填充 不足8位左侧填充0 my_str.zfill(8) 题目来自【牛客】 import sys def classify_ip(ip_mask): ip_class, is_private_ip, mask_class ignore_ip, 0, valid_mask# 解…

QT中对于QPushButton样式的调整

文章目录 前言1.QPushButton1.1 新建项目导入资源1.2 添加Push Button并定义样式1.3 调整样式1.4 实际需求情况1.5 背景色和边框 2. 一些概念理解2.1 图片2.2 边距 总结 前言 前段时间在调软件的样式,学到了些新的东西,也碰到了些问题,这里做…

Spring Cloud学习笔记(Ribbon):Ribbon的应用样例

这是本人学习的总结,主要学习资料如下 - 马士兵教育 1、Ribbon简介1.1、架构图1.2、简单实现负载均衡 2、配置负载均衡策略2.1、IRule2.2、使用IRule简单示例2.2.1、Overview2.2.1、注入IRule2.2.2、关联IRule和服务 1、Ribbon简介 我们都知道Ribbon是用于负载均衡…

浅析Java的字符串的底层和相关知识(恳请大佬指正)

本期经验和建议的总结: 在拼接字符串的时候,如果大量拼接时建议使用StringBuilder,在转为字符串。 1:Java的号比较的原理: 在Java中,号在对基本数据类型进行比较时,比较的时具体的数值大小例…