首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

累计连续签到设计和实现

由于需求复杂,本文还是选择使用关系型数据库实现和存储,因为关系型数据库查询无所不能,哈哈哈哈 功能要求 签到 补签 统计某用户截至今天连续打卡天数 统计某用户在某一打卡排名 统计某用户截至到某天连续打卡天数...SELECT 查询小于当前签到日期(markDayTime)最近一条签到记录数据,如果不存在,day_continue 字段为 -1,如果存在打卡记录,则day_continue 字段为 markDayTime...mark_day_time < #{markDayTime} ORDER BY mark_day_time DESC LIMIT 1) t 补签和普通打卡在代码上有不一致,因为需要更新大于补签日期最旧一条数据...= 1) { return null; } // 更新大于markDayTime一条记录dayContinue字段值 MarkRecord nearestBeforeRecord...连续打卡天数:当天没打卡,前一打卡,也算连续打卡;如果前一没有打卡,那就断签了, 总打卡数:统计用户所有打卡记录数量 SQL 参数说明:#{yesterdayTime}为昨天日期,#{markDayTime

2.7K30
您找到你想要的搜索结果了吗?
是的
没有找到

SQL 简易教程 下

❑ 对所有行执行计算,指定 ALL 参数或不指定参数(因为 ALL 默认行为)。 ❑ 只包含不同值,指定 DISTINCT 参数。...和DATE_ADD 一个加上日期, 一个减去日期 DATEDIFF() 函数返回两个日期之间天数。...%u 周(00-53)星期一一周第一 %V 周(01-53)星期日一周第一,与 %X 使用 %v 周(01-53)星期一一周第一,与 %x 使用 %W 星期名 %w 周...(0=星期日, 6=星期六) %X 年,其中星期日第一,4 位,与 %V 使用 %x 年,其中星期一第一,4 位,与 %v 使用 %Y 年,4 位 %y 年,2 位 防止 SQL...游标(cursor)一个存储在DBMS服务器上数据库查询,它不是一条SELECT语句,而是被语句检索出来结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中数据。

2.1K10

现场访问

字段存取表达用于选择记录值或将投射一个记录或表一个具有更少字段或列,分别。...它使用运算符x[y]按字段名称在记录中查找字段。如果字段y在 中不存在x,则会引发错误。表单x[y]?用于执行可选字段选择,null如果请求字段记录中不存在,则返回。...// null 运营商支持对多个字段集体访问,用于必需记录投影和可选记录投影。操作员x[[y1],[y2],...]将记录投影到具有较少字段记录(由y1、y2、选择...)。...以后对字段任何访问y都会引发相同错误。 表达式x产生一个记录或表值,或引发错误。...一条记录每个字段名称也存在于另一条记录中。 一条记录每个字段值等于另一条记录中同名字段值。 例如:

77330

MySQL | 基础语法介绍

FROM table_name WHERE condition1 AND condition2 AND condition3 ...; 如果第一个条件与第二个条件都为TRUE,则AND运算符显示一条记录...FROM table_name WHERE condition1 OR condition2 OR condition3 ...; 如果第一个条件与第二个条件任何一个条件为TRUE,则OR运算符显示一条记录...区别:where分组之前过滤,不满足where条件则不参与分组,having分组之后对结果进行过滤,having可以使用聚合函数,where不可以 5、排序查询 SELECT column1,...ASC|DESC; 如果字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 6、分页查询 (1)select 字段列表 from 表名 limit 起始索引,查询记录数; 第一页数据,起始索引可省略...、多表查询 多表查询 (1)INNER JOIN:选择两个表中具有匹配值记录 (2)SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1

86920

六千字带你快速上手操作MySQL

,subjectNo,examDate); DMl语句操作数据 插入数据记录 ​ 概念 语法 插入单行数据 插入一条需要存储在数据库数据记录 INSERT INTO 表名 (字段1,字段2)value...新表 from 原表 修改数据记录 概念 语法 修改数据记录 当我们要对某一条数据修改或者更新时我们要用到 UPDATE 表名 SET 字段1= '修改内容 WHERE 条件 删除表 概念 语法...(SQL)返回:sql upper(str) 将str所有的字符串改为大写 sql upper(sql)返回:SQL SUBSTRING(STR,NUM,LEN) 返回字符串str第num个位置开始长度为...) 返回d1和d2之间相隔天数 SELECT DATEDIFF(NOW(),‘2008-8-8’);返回值:4592 adddate(date,n) 计算日期参数date加上n之后时间 SELECT...=,,>=之后,它不允许子查询返回多条记录,如果有多条满足条件记录返回,会出现执行代码错误。 ​

86520

MYSQL(基本篇)——一篇文章带你走进MYSQL奇妙世界

ROUND(x,y) 求参数x四舍五入值,保留y位小数 日期函数 函数 功能 CURDATE() 返回当前日期 CURTIME() 返回当前时间 NOW() 返回当前日期和时间 YEAR(date...描述 关键字 非空约束 限制字段数据不能为NULL NOT NULL 唯一约束 保证字段所有数据均为唯一 UNIQUE 主键约束 主键一行数据唯一标识,要求非空且唯一 PRIMARY KEY...默认约束 保存数据时,若未指定字段值,则采用默认值 DEFAULT 检查约束 保证字段值满足某一条件 CHECK 外键约束 让两张表建立连接,保证数据一致性和完整性 FOREIGN KEY 注意...,即这些操作要么同时成功,要么同时失败 注意: 默认MYSQL事务自动提交,也就是说每执行一条DML语句,MYSQL就会立即隐式提交事务 事务操作 事务操作分为几个部分: 查看事务提交方法 --...持久性(Durability):事务一旦提交或滚回,它对数据库改变就是永久 并发事务问题 并发事务常常出现三种问题: 问题 描述 脏读 一个事务读到另外一个事务还没有提交数据 不可重复读 一个事务先后读取同一条记录

1.6K40

A轮公司数据分析面试经验

代码完成) 1、找出一内有多次更新商品ID 2、对于一内有多次更新商品,只保留当天最后一条记录,去掉其他记录 3、分析商品最后更新时间分布,看能否得出有价值结论 Part. 2 SQL方法:...因为2,3题需要计算当天指标,所以我们日期格式化时候要加上以为单位日期。...BY 修改量 desc 一内更新多次记录也就是数据>1 或者>=2 两种写法都可以,顺序先按照每天日期分组,再按照item_id,也就是商品分组。...猜测对于店铺人员不多,那么初步推测店铺人员在上班过程当中充当客服角色,所以白天上班没有机会和时间去更新商品内容,所以选择夜晚修改宝贝。...用rank方法可以实现SQL 窗口函数,对day和itemid分组,在进行insert_time排序,然后row_number<2 也就是等于1保留,因为这条数据当天最新数据。 第三题: ?

86231

MySQL基础及原理

在MySQL中,默认AUTO_INCREMENT初始值1,每新增一条记录字段值自动加1。...设置自增属性(AUTO_INCREMENT)时候,还可以指定第一条插入记录自增字段值,这样新插入记录自增字段值从初始值开始递增,如在表中插入第一条记录,同时指定id值为5,则以后插入记录id...二十二、游标 什么游标 虽然我们也可以通过筛选条件 WHERE 和 HAVING,或者限定返回记录关键字 LIMIT 返回一条记录,但是,却无法在结果集中像指针一样,向前定位一条记录、向后定位一条记录...,或者 随意定位到某一条记录,或者逐条处理数据 ,并对记录数据进行处理。...窗口函数作用类似于在查询中对数据进行分组,不同,分组操作会把分组结果聚合成一条记录,而窗口函数将结果置于每一条数据记录中。

3.8K20

Kettle构建Hadoop ETL实践(九):事实表技术

一个订单完整生命周期由五行数据描述:下订单时生成一条销售订单记录;订单商品被分配到相应库房时,新增一条记录,存储分配时间和分配数量;产品打包时新增一条记录,存储打包时间和数量;类似的,订单配送和客户收货时也都分别新增一条记录...它描述了status_date列对应状态值,例如,如果一条记录状态为N,则status_date列下订单日期,如果状态R,status_date列收货日期。...每种状态都会有一条订单记录,这些记录具有相同订单号,因此订单号不能再作为事务表主键,需要删除order_number字段自增属性与主键约束。...此时结果应该只是增加了一条新产品记录,原有数据没有变化。 无事实事实表没有任何度量事实表,它本质上一组维度交集。...为了确定事实表中一条销售订单记录是否迟到,需要把源数据中登记日期列装载进销售订单事实表。为此在要销售订单事实表上添加登记日期代理键列。

5.8K10

23篇大数据系列(三)sql基础知识(史上最全,建议收藏)

1.4  主键  主键一列或多列组合,用于标识表中唯一一条记录。所以,它天然一个属性就是不重复性,也不允许为NULL值。...1对1,指表A和表B通过某字段关联后,表A中一条记录最多对应表B中一条记录,表B中一条记录也最多对应表A中一条记录。...1对多,指表A和表B通过某字段关联后,表A中一条记录可能对应表B中多条记录,而表B中一条记录最多对应表A中一条记录。...多对多,指表A和表B通过某字段关联后,表A中一条记录可能对应表B中多条记录,而表B中一条记录可能对应表A中多条记录。 1对1 和 1对多关系,通常使用外键引用对应表主键就可以表达。...SQL用关键字、表名、列名、操作符等组合而成一条语句,用来描述操作内容。SQL有国际标准,因此其通用性不言而喻。 2.1  关键字  SQL有很多关键字,每个关键字含义和用法都不相同。

2.6K60

MySQL基础SQL编程学习2

一个表中 FOREIGN KEY 指向另一个表中 UNIQUE KEY(唯一约束键),FOREIGN KEY 约束用于预防破坏表之间连接行为,也能防止非法数据插入外键列因为它必须它指向那个表中值之一...(即外键表约束主键表) SET NULL:则当在主键表中删除对应记录时,首先检查记录是否有对应外键,如果有则设置子表中外键值为null(一样外键表约束主键表,不过这就要求外键允许取null) 5...---- 0x01 SQL 基础函数 描述:SQL 拥有很多可用于计数和计算内建函数,可以帮助我们更方便存储以及获取数据; Date 函数 描述:在处理日期时候我们需要确保所插入日期格式,与数据库中日期格式相匹配...%V 周(01-53)星期日一周第一,与 %X 使用 %v 周(01-53)星期一一周第一,与 %x 使用 %W 星期名 %w 周(0=星期日, 6=星期六) %X 年,其中星期日第一...,4 位,与 %V 使用 %x 年,其中星期一第一,4 位,与 %v 使用 %Y 年,4 位 %y 年,2 位 SQL Server Date 函数 函数 描述 GETDATE() 返回当前日期和时间

7.2K30

视频这么火,你会这么分析吗?

image.png 其中表内各字段含义如下 用户名:表示用户在短视频平台注册唯一用户名。 操作记录:表示用户在短视频平台点击按钮名称。...现在运营人员找到作为数据分析师你,想让你帮忙看看用SQL取两个数据,具体如下: 1.分析每天访客数和他们平均操作次数 2.统计每天符合以下条件用户数:A操作之后B操作,AB操作必须相邻。...按日期分组(group by日期),汇总(人数用count用户名,操作数用count操作时间)。这里因为表中代表日期字段“操作时间”精确到分秒,所以需要利用date函数将操作时间转为日期形式。...2.统计每天符合以下条件用户数:A操作之后B操作,AB操作必须相邻 其实这个在日常工作中业务经常要用到SQL取数场景。...从而可以写出第一条SQL语句: image.png 填空完成后,再在外边嵌套条件: image.png 最终SQL如下: image.png  查询结果: image.png 【举一反三】

43900

拉链表是什么

0x01 什么拉链表 拉链表针对数据仓库设计中表存储数据方式而定义,顾名思义,所谓拉链,就是记录历史。记录一个事物从开始,一直到当前状态所有变化信息。...拉链表使用场景 在数据仓库数据模型设计过程中,经常会遇到下面这种表设计: 有一些表数据量很大,比如一张用户表,大约 10 亿记录,50 个字段,这种表,即使使用 Orc 压缩,单张表存储也会超过...现在我们假设我们已经已经初始化了 2017-01-01 日期,然后需要更新 2017-01-02 那一数据,我们有了下面的 Sql。 然后把两个日期设置为变量就可以了。...拉链表和流水表 流水表存放一个用户变更记录,比如在一张流水表中,一数据中,会存放一个用户每条修改记录,但是在拉链表中只有一条记录。 这是拉链表设计时需要注意一个粒度问题。...淘汰机制 关于淘汰机制,其实和性能也是有关系,一方面是因为所有数据积累会导致计算越来越慢,另一方面业务侧其实对历史数据需求也有一定优先级

10.2K145

漫谈数据仓库之拉链表(原理、设计以及在Hive中实现)

0x01 什么拉链表 拉链表针对数据仓库设计中表存储数据方式而定义,顾名思义,所谓拉链,就是记录历史。记录一个事物从开始,一直到当前状态所有变化信息。...拉链表使用场景 在数据仓库数据模型设计过程中,经常会遇到下面这种表设计: 有一些表数据量很大,比如一张用户表,大约10亿记录,50个字段,这种表,即使使用ORC压缩,单张表存储也会超过100G...005资料进行了修改,006新增用户: 如果在数据仓库中设计成历史拉链表保存表,则会有下面这样一张表,这是最新一(即2017-01-03)数据: 说明 t_start_date表示该条记录生命周期开始时间...现在我们假设我们已经已经初始化了2017-01-01日期,然后需要更新2017-01-02那一数据,我们有了下面的Sql。 然后把两个日期设置为变量就可以了。...拉链表和流水表 流水表存放一个用户变更记录,比如在一张流水表中,一数据中,会存放一个用户每条修改记录,但是在拉链表中只有一条记录。 这是拉链表设计时需要注意一个粒度问题。

27230

详解数据仓库之拉链表(原理、设计以及在Hive中实现)

0x01 什么拉链表 拉链表针对数据仓库设计中表存储数据方式而定义,顾名思义,所谓拉链,就是记录历史。记录一个事物从开始,一直到当前状态所有变化信息。...拉链表使用场景 在数据仓库数据模型设计过程中,经常会遇到下面这种表设计: 有一些表数据量很大,比如一张用户表,大约10亿记录,50个字段,这种表,即使使用ORC压缩,单张表存储也会超过100G...资料进行了修改,006新增用户: 如果在数据仓库中设计成历史拉链表保存表,则会有下面这样一张表,这是最新一(即2017-01-03)数据: 说明 t_start_date表示该条记录生命周期开始时间...现在我们假设我们已经已经初始化了2017-01-01日期,然后需要更新2017-01-02那一数据,我们有了下面的Sql。 然后把两个日期设置为变量就可以了。...拉链表和流水表 流水表存放一个用户变更记录,比如在一张流水表中,一数据中,会存放一个用户每条修改记录,但是在拉链表中只有一条记录。 这是拉链表设计时需要注意一个粒度问题。

42510

漫谈数据仓库之拉链表(原理、设计以及在Hive中实现)

0x01 什么拉链表 拉链表针对数据仓库设计中表存储数据方式而定义,顾名思义,所谓拉链,就是记录历史。记录一个事物从开始,一直到当前状态所有变化信息。...拉链表使用场景 在数据仓库数据模型设计过程中,经常会遇到下面这种表设计: 有一些表数据量很大,比如一张用户表,大约10亿记录,50个字段,这种表,即使使用ORC压缩,单张表存储也会超过100G...现在我们假设我们已经已经初始化了2017-01-01日期,然后需要更新2017-01-02那一数据,我们有了下面的Sql。 然后把两个日期设置为变量就可以了。...拉链表和流水表 流水表存放一个用户变更记录,比如在一张流水表中,一数据中,会存放一个用户每条修改记录,但是在拉链表中只有一条记录。 这是拉链表设计时需要注意一个粒度问题。...在拉链表设计中可以加一些内容,因为我们每天保存一个状态,如果我们在这个状态里面加一个字段,比如如当天修改次数,那么拉链表作用就会更大。

14.3K80

数据库MySQL详解

(确定记录)字段来共同连接两张表 Id(P) 婚姻 籍贯 住址 联系人 2 1 一个常用表中一条记录: 永远只能在一张不常用表中匹配一条记录;反过来,一个不常用表中一条记录在常用表中也只能匹配一条记录...解决方案: 在某一张表中增加一个字段,能够找到另外一张表记录: 应该在孩子表中增加一个字段指向妈妈表: 因为孩子表记录只能匹配到一条妈妈表记录....,因为你在连接时候左表记录全部保留,在右表中没有员工与OPERATIONS部门匹配,连接NULL,这也是一条记录,所以这里才会出现1。...Old代表记录,new代表记录 删除时候没有new; 插入时候没有old Old和new都是代表记录本身: 任何一条记录除了有数据, 还有字段名字....使用方式: old.字段名 / new.字段名(new代表假设发生之后结果) 查看触发器效果 如果触发器内部只有一条要执行SQL指令, 可以省略大括号(begin和end) Create

2.2K10

MySQL基础:SQL分类DDL、DML、DQL、DCL;函数、约束、多表查询、事务、并发事务四大问题、事务隔离级别——脏写、脏读、不可重复读、幻读

注意:默认MySQL事务自动提交,也就是说 当执行一条DML语句 MySQL会立即隐式地提交事务。...不可重复读(non-repeatable read)一个事务先后读取同一条记录,但两次读取数据不同,称之为不可重复读。...紧接着,事务B插入了一条余额大于0记录行(富有程度默认为贫穷),并且在事务A提交之前先提交了,SQL如下:INSERT INTO `bank_balance` (`id`, `user_name`,...事务A修改一条数据值,还未提交,事务B就读到了A修改值;结果A回滚了,事务B之前读就是一个过期值,即事务读到了修改之后没有提交值不可重复读(non-repeatable read):指的是在一个事务内多次读取同一条数据...串行化(SERIALIZABLE),每个读写操作都会加锁,多个事务要访问同一条记录时,必须要进行排队,优先级低事务必须等优先级高事务完成以后才能进行。

24110
领券