一道SQL题

news2024/11/23 20:20:50

有个搞数仓的朋友不知道从哪儿弄了个题。。。
做了做体验了一下。。。
记录记录。
在这里插入图片描述

分析

要保证每天都要做新题
5天必须都做题,不然GG
最后一天必须做新题,如果最后一天做新题了,前面那几天没做新题,做的是老题

最后一天,如果没做题会被踢出
最后一天做的题,不是新题记录0,当求和之后为0,说明没有新题,那就踢出
如果是最后一天做了新题,第四天没做新题

下面的问题需要处理,

用户a,前四天(1,2,3)
第一天:1,2,3
第二天:1,2,3
第三天:1,2,3
第四天:1,2,3

第五天:1,2,3,4

保证最后一天做新题的案例:

SELECT
	info.user_id 
FROM
(
	SELECT
		two.user_id,
		sum(
		IF
			(
				two.question_id IN ( SELECT DISTINCT one.question_id FROM log_table AS one WHERE one.date between "2022-09-19" and "2022-09-22" AND one.user_id = two.user_id ),
				0,
				1 
			)) AS num 
	FROM
		log_table AS two 
	WHERE
		two.date = "2022-09-23"
	GROUP BY
		two.user_id 
	) info 
WHERE
	info.num >0

补充完善

select
	* 
from (SELECT
	info.user_id 
FROM
(
	SELECT
		two.user_id,
		sum(
		IF
			(
				two.question_id IN ( SELECT DISTINCT one.question_id FROM log_table AS one WHERE one.date between "2022-09-19" and "2022-09-22" AND one.user_id = two.user_id ),
				0,
				1 
			)) AS num 
	FROM
		log_table AS two 
	WHERE
		two.date = "2022-09-23"
	GROUP BY
		two.user_id 
	) info 
WHERE
	info.num >0) as d5 
left join (SELECT
	info.user_id 
FROM
(
	SELECT
		two.user_id,
		sum(
		IF
			(
				two.question_id IN ( SELECT DISTINCT one.question_id FROM log_table AS one WHERE one.date between "2022-09-19" and "2022-09-21" AND one.user_id = two.user_id ),
				0,
				1 
			)) AS num 
	FROM
		log_table AS two 
	WHERE
		two.date = "2022-09-22"
	GROUP BY
		two.user_id 
	) info 
WHERE
	info.num >0) as d4 
on d5.user_id = d4.user_id
left join (SELECT
	info.user_id 
FROM
(
	SELECT
		two.user_id,
		sum(
		IF
			(
				two.question_id IN ( SELECT DISTINCT one.question_id FROM log_table AS one WHERE one.date between "2022-09-19" and "2022-09-20" AND one.user_id = two.user_id ),
				0,
				1 
			)) AS num 
	FROM
		log_table AS two 
	WHERE
		two.date = "2022-09-21"
	GROUP BY
		two.user_id 
	) info 
WHERE
	info.num >0) as d3 
on d5.user_id = d3.user_id
left join (SELECT
	info.user_id 
FROM
(
	SELECT
		two.user_id,
		sum(
		IF
			(
				two.question_id IN ( SELECT DISTINCT one.question_id FROM log_table AS one WHERE one.date between "2022-09-19" and "2022-09-19" AND one.user_id = two.user_id ),
				0,
				1 
			)) AS num 
	FROM
		log_table AS two 
	WHERE
		two.date = "2022-09-20"
	GROUP BY
		two.user_id 
	) info 
WHERE
	info.num >0) as d2 
on d5.user_id = d2.user_id
left join (SELECT
	info.user_id 
FROM
(
	SELECT
		two.user_id,
		sum(
		IF
			(
				two.question_id IN ( SELECT DISTINCT one.question_id FROM log_table AS one WHERE one.date between "2022-09-18" and "2022-09-18" AND one.user_id = two.user_id ),
				0,
				1 
			)) AS num 
	FROM
		log_table AS two 
	WHERE
		two.date = "2022-09-19"
	GROUP BY
		two.user_id 
	) info 
WHERE
	info.num >0) as d1 
on d5.user_id = d1.user_id

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初识mysql之理解索引

目录 一、 primary key对索引的影响 1. 主键数据有序问题 2. mysql中的page 3. 主键排序问题 二、理解多个page 1. 数据在page中的保存 2. 页目录 3. 单页情况 4. 多页情况 5. 为什么除了叶子节点外的其他节点不保存数据,只保存目录 6. 为什么叶子节点全…

创意网页模板免费下载,让你的网站与众不同!

今天给大家带来的网站模板素材,网站类型丰富,包含户外旅行、餐饮、个人网站等等,可以学习和参考其中的布局排版和配色。 ⬇⬇⬇点击获取更多设计资源 https://js.design/community?categorydesign&sourcecsdn&planbbqcsdn772 1、设…

域内信息收集

将网络中多台计算机逻辑上组织到一起进行集中管理,这种区别于工作组的逻辑环境叫 做域。域是由域控制器(Domain Controller)和成员计算机组成,域控制器就是安装了活动 目录(Active Directory)的计算机。活动目录提供了存储网络上对象信息并使用网络使用该…

图像处理之canny边缘检测(非极大值抑制和高低阈值)

Canny 边缘检测方法 Canny算子是John F.Canny 大佬在1986年在其发表的论文 《Canny J. A computational approach to edge detection [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1986 (6): 679-698.》提出来的。 检测目标: 低错误率…

2023年软件测试八股文(含答案+文档)

Part1 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自…

汽车新品研发用泛微事井然,全过程数字化、可视化

产品研发是汽车制造产业链的运营过程中的初始阶段,是提升汽车企业创新力、竞争力的重要一环,不仅要洞悉市场变化,还要有效协同企业内部的各类资源… 汽车新产品研发项目周期长、资源投入大,面临着诸多挑战: 1、市场需…

采集传感器的物联网网关怎么采集数据?

随着工业4.0和智能制造的快速发展,物联网(IoT)技术的应用越来越广泛,传感器在整个物联网系统中使用非常普遍,如温度传感器、湿度传感器、光照传感器等,对于大部分物联网应用来说,采集传感器都非…

02.MySQL——CURD

文章目录 表的增删改查Create单行数据全列插入多行数据指定列插入插入否则更新替换——REPLACE RetrieveSELECT 列WHERE 条件结果排序筛选分页结果 UpdateDelete删除数据截断表 插入查询结果聚合函数group bywhere和having SQL查询中关键字优先级函数日期函数字符串函数数学函数…

Spring 事务控制

1. 编程式事务控制相关对象 1.1 平台事务管理器 1.2 事务定义对象 1.3 事务状态对象 关系: PlatformTransactionManager TransactionManager TransactionStatus 2. 基于XML的声明式事务控制 切点:(目标对象)业务方法&#xff…

idea不小心push的文件夹怎么处理?

第一种方式,把不小心push上去的人解决掉。 第二种方式,以我自身为例,同事不小心push了.idea文件夹 首先打开git bash git rm --cached .idea/ -r 然后查看一下状态 git status 接着提交修改 git commit -m "cancel track .idea file&q…

从小白到大神之路之学习运维第62天--------Ansible自动化运维工具(playbook配置深入了解2.0)

第三阶段基础 时 间:2023年7月17日 参加人:全班人员 内 容: playbook配置深入了解2.0 目录 一、角色 实验案例:(安装Mariadb) 二、变量 (一)在playbook中使用自定义变量&#xff1…

Microsoft Outlook 共享收发邮件的权限给其他人

点击File 点击Account Settings→DelegateAccess 点击Add

数据可视化自助式分析工具:jvs-bi数据扩展及函数配置说明

jvs-bi数据拓展节点 数据拓展是数据可视化加工过程中的重要工具,它核心的作用是对原有数据表进行加工扩展,实现功能如下图所示 函数配置操作过程 操作说明 1、拖动数据拓展字段,并将字段拓展与之前的历史节点连接起来,点击数据拓…

访问Liunx文件系统

访问Liunx文件系统 识别文件系统和设备 存储管理概念 Linux服务器上文件按文件系统层次结构访问。该文件系统层次结构测试由系统可用的存储设备所提供的文件系统组装而来。每个文件系统都是一个已格式化的存储设备,可用于存储文件。 文件系统和挂载点 要让文件系…

springboot sentinel 整合 规则详情和代码实现-分布式/微服务流量控制

文章目录 sentinel控制台安装目标版本说明sentinel 规则整合验证pom.xml配置注解拦截资源控制规则---内存模式测试controller客户端接入控制台 测试sentinel控制台接口调用 下一篇:配置持久化策略规则外传 sentinel控制台安装 下载地址:https://github.…

SpringCloud学习路线(6)—— 远程调用HTTP客户端Feign

一、Feign替代RestTemplate RestTemplate示例 String url "http://userservice/user/" order.getUserId(); User user restTemplate.getForObject(url, User.class);RestTemplate的缺陷: 代码可读性差,编码体验不统一。参数复杂URL难以维…

(位运算)2023年7月19日学习笔记

位运算符的优先级(从高到低):~、&、^、|【其中~(取反)的结合方向自右至左,且优先级高于算术运算符,其余运算符的结合方向都是自左至右,且优先级低于关系运算符】 声明一下关系运…

乔云监控tf卡格式化后数据恢复方法

您有没有使用过乔云牌监控设备呢?它通常里面会放置一个TF卡以存储录像,而TF卡长期高温高速运行,容易产生碎片,因此很多商家会建议大家一个月进行一次格式化。但是格式化后您有没有后悔过呢?在这个篇文章中,…

rt-thread构建含c++源码的工程

RT-Thread Components > C/C and POSIX layerscons构建项目会出错: vim libraries/SConscript ,删除 pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp(切记不要注释,要删除) 再次scons构建项目&#…

C++基础算法高精度篇

📟作者主页:慢热的陕西人 🌴专栏链接:C算法 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 主要讲解了高精度算法的四种常用的计算 文章目录 Ⅲ. 高精度Ⅲ. Ⅰ . …