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

抖音面试题:遇到连续问题怎么办?

image.png 【抖音面试题】 有一张“用户登陆记录表”,包含两个字段:用户id、日期。 image.png 【问题】查询2021年每个月,连续2天都有登陆的用户名单。...可以用分组汇总,也就是分组(group by 月,用户id),统计(对分组后每个组计数就是连续登陆的天数 count) 2....,用到窗口函数row_number(); 4)筛选出2021年的数据。...也就是分组(group by 月,用户id,标记),统计(对分组后每个组计数就是连续登陆的天数 count) 1 select 月,用户id,标记, 2        count(*) as 连续登陆天数...()、day()、count(); 4.考查对窗口函数的应用,窗口函数能解决的几类典型问题要能牢记; 【举一反三】 查询2021年每个月,连续5天都有登陆的用户数。

1.2K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【MySQL 系列】MySQL 按照当前年月周日统计数据

    前言: 接了一个小需求,获取用电统计的数据,要求获取最近月,周,天统计数据,MySQL 本来就包含处理这种需求的函数,这里记录下。...(CURDATE(),INTERVAL 1 MONTH) <= DATE( 表中时间字段 ); 查询当年每月的统计数据 SELECT MONTH('表中日期字段'), COUNT(*) FROM '表名...不然会报:org.xml.sax.SAXParseException: 元素内容必须由格式正确的字符数据或标记组成(具体可以看下这篇文章: 传送门 ) 统计某年每个月的数据量 SELECT MONTH(...`TABLES` WHERE TABLE_SCHEMA = 'database_name'; 查询阻塞语句 SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_Id...= w.blocking_trx_id INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id; 统计数据库访问量前

    2.7K30

    图解面试题:如何分析红包领取情况?

    现在业务部门需要分析出以下问题: 1.计算2019年6月1日至今,每日DAU(活跃用户是指有登陆的用户) 2.分析每天领取红包的用户数、人均领取金额、人均领取次数,要考虑用户属性及领取红包未登录情况。...4.分析每个月领过红包用户和未领红包用户的数量 【分析思路】 1.计算2019年6月1日至今,每日DAU(活跃用户是指有登陆的用户) 每日DAU(有登陆的用户数)用到的表是“用户活跃表”。...from 用户活跃表 as mleft join 领取红包表 as non a.登录日期 = b.抢红包日期 and a.用户ID = b.用户ID; 把上面查询结果记为临时表a,题目要分析的是“每个月领过红包用户...代入上面sql语句,查询结果如下图 【本题考点】 1.多表查询的理解和灵活应用,记住下图可以解决99%的多表查询问题。...4.按条件统计数量的时候,要结合case语句和sum来统计数,例如之前课程里讲过的下面案例 ​

    1.4K20

    MySQL 查询重复数据,删除重复数据保留id最小的一条作为唯一数据

    开发背景:   最近在做一个批量数据导入到MySQL数据库的功能,从批量导入就可以知道,这样的数据在插入数据库之前是不会进行重复判断的,因此只有在全部数据导入进去以后在执行一条语句进行删除,保证数据唯一性...操作: 使用SQL语句查询重复的数据有哪些: SELECT * from brand WHERE brandName IN( select brandName from brand GROUP BY brandName...Id FROM (SELECT MIN(Id) AS Id FROM brand GROUP BY brandName HAVING COUNT(brandName)>1) t) #查询显示重复的数据都是显示最前面的几条...,因此不需要查询是否最小值 更加简单快捷的方式: 这是老飞飞的前辈给了一个更加方便,简洁的写法(非常感谢大佬的方法): DELETE FROM brand WHERE Id NOT IN (SELECT...Id FROM (SELECT MIN(Id) AS Id FROM brand GROUP BY brandName) t) 这句的意思其实就是,通过分组统计出数据库中不重复的最小数据id编号,让后通过

    3.6K20

    纳税服务系统七(投诉管理模块)【显示投诉信息、处理回复、我要投诉、Quartz自动受理、统计图FusionCharts】

    根据id查找投诉的全部信息。...不然在保存信息的时候,就会把投诉信息丢失了!。在Action中通过id重新查找回投诉的信息!...我们的后端就是根据不同的年份,去获取不同的年份每个月的数据,返回给浏览器… 前端分析 我们的需求是得让我们显示近5年的统计图…于是下拉框是我们近5年的…....,那就行了… 但是呢,我们还有其他的细节需要考虑:今年是2017年7月,但是在查询年度投诉数是要把整个年的信息查询出来,8-12月的投诉数肯定是没有的。...在后端中,还有一个难点,就是我们的SQL语句该怎么写????我们要从数据库查询的是该年份每个月的投诉数…. 通过该年而查询每个月,我们可以很快地想到要用到分组查询。

    4.9K71

    「网络安全」SQL注入攻击的真相

    SQL(结构化查询语言)是一种非常流行的与数据库通信的方式。虽然许多新数据库使用非SQL语法,但大多数仍然与SQL兼容。这使得SQL成为任何想要访问数据的人的便利工具,无论他们的动机如何。...SQL注入(或SQLi)攻击已经存在了近20年。他们永远不会停止使用Imperva的Web应用程序防火墙(WAF)。所以我们有丰富的数据和经验可供分享。...来自Imperva WAF的统计数据 Imperva的WAF每天都会在我们保护的网站上减少数百万次SQL注入攻击。我们保护的网站中至少有80%每个月都会受到攻击。...我们每月监控数万个攻击性IP,并使用攻击分析来查找恶意IP并防范它们。我们通过分析过去几个月的攻击IP收集了一些有趣的统计数据: 图4:日复一日尝试SQLi攻击的IP。...该代码基于MySQL连接器驱动程序(https://dev.mysql.com/doc/connector-python/en/): def add_employee(id: int, email:

    1.3K30

    一个诡异的MySQL查询超时问题,居然隐藏着存在了两年的BUG

    点开异常日志一看是这样的: 总结来说就是MySQL查询超时。 像这种稳定复现的BUG,我原以为只需三分钟能定位,没有想到却耗费了我半天的时间。...按照以往的经验,我认为有这几点因素会导致查询超时 MySQL资源竞争 数据库备份 网络 MySQL资源竞争 首先,我通过监控系统查看了那段时间MySQL的运行情况,连接数和CPU负载等指标都非常正常。...这个条件非常苛刻,我检查了相关的代码,问了相关负责人,并没有这种情况,所有的更新都是根据Id主键更新的。...从日志上面可以看到,查询的日期区间从2020年9月到2021年4月,时间跨度7个月。MySQL成本计算的时候认为区间太大,走索引还不如直接扫描全表,最终没有走索引扫描了1800W条数据。...于是联系提供这个RPC接口的相关人员,通过查找验证确定这是底层数据的问题,应该返回几天结果返回了几个月。

    43910

    【黄啊码】MySQL中NULL和““的区别以及对索引的影响

    (id,col_a,col_b) values(4,null,1); mysql> select * from test_ab; +------+-------+-------+ | id | col_a...第三种比较,统计数量 mysql> select count(col_a) from test_ab; +--------------+ | count(col_a) | +--------------...(1)如果查询中包含可为NULL的列,对Mysql来说更难优化,因为可为NULL的列使得索引,索引统计和值比较都更复杂。 (2)含NULL复合索引无效....,则不会使用索引 3.like查询以%开头 4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引 5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引 5.MySQL...显然,如果值的差异性大,并且以等值查找(=、 、in)为主,Hash索引是更高效的选择,它有O(1)的查找复杂度。 如果值的差异性相对较差,并且以范围查找为主,B树是更好的选择,它支持范围查找。

    1K20

    1.5万字+30张图盘点索引常见的11个知识点

    ,这就是前面提到的数据页存储的额外信息之一,被称为页目录 假设此时要查询id=6的数据之后,此时只需要从页目录中根据二分查找,发现在4-8之间,由于4和8是他们所在分组的最大的id,那么id=6肯定在8...一般来说,mysql数据库的B+树一般三层就可以放下几千万条数据 此时查找id=5的数据,大致分为以下几个步骤: 从数据页11根据二分查找定位到id=5对应数据页5 再到数据页5根据id=5二分查找定位到数据页...从上面的二级索引的查找数据过程分析,就明白了回表的意思,就是先从二级索引根据查询条件字段值查找对应的主键id,之后根据id再到聚簇索引查找其它字段的值。...,实际情况会更复杂,比如连表查询等等,有感兴趣的小伙伴查阅相关的资料 小结 总的来说,这一节主要是让你明白一件事,mysql在选择索引的时候,会根据统计数据和成本计算的规则来计算使用每个索引的成本,然后选择使用最低成本的索引来执行查询...mysql统计数据误差较大 mysql统计数据误差较大也可能会导致索引失效,因为前面也说了,mysql会根据统计数据来计算使用索引的成本,这样一旦统计数据误差较大,那么计算出来的成本误差就大,就可能出现实际走索引的成本小但是计算出来的是走索引的成本大

    21520

    单台 MySQL 支撑不了这么多的并发请求,我们该怎么办?

    Redis 作为 MySQL 的前置缓存,可以替 MySQL 挡住绝大部分查询请求,很大程度上缓解了 MySQL 并发请求的压力。...重建表的过程中,索引也会重建,这样表数据和索引数据都会更紧凑,不仅占用磁盘空间更小,查询效率也会有提升。 4、分库分表 数据库的性能取决于两个因素:查找的时间复杂度、数据量大小。...这个比较容易理解,比如按日期分表,1年12个月,每个月的数据集中在一个表中。 查表法。...100万张逻辑分表,可以支持按订单id或买家uid来查询。...至于卖家部分,采用数据异构方式,采用卖家uid做分表键,将卖家uid和订单id放入另一张数据表中,满足卖家的查询。当然复杂度也会提升不少。

    2.3K20

    EXPLAIN FORMAT=json和EXPLAIN ANALYZE查询计划解读

    名称 描述 system 表中只有一条记录并且该表使用的存储引擎的统计数据是精确的,比如MyISAM、Memory const 根据主键或者唯一二级索引列与常数进行等值匹配 eq_ref 在连接查询时,...如何使用EXPLAIN ANALYZE 我们将使用 Sakila 样本数据库中的数据和一个查询举例说明,该查询列出了每个工作人员在 2005 年 8 月累积的总金额。...这意味着我们正在执行嵌套循环连接,在其中扫描 staff 表,然后针对该表中的每一行,使用索引查找和过滤的付款日期来查找 payment 表中的相应条目。...这个时间反映了整个子树在执行过滤操作时的根部时间,即,使用索引查找迭代器读取行,然后评估付款日期为 2005 年 8 月的时间。...如果您想知道为什么优化器选择了该计划,请查看行计数器。如果估计的行数与实际的行数之间存在较大差异(即,几个数量级或更多),需要仔细看一下。

    3.1K31

    python初学者笔记—入门基础知识

    可以通过id()、type()、print()三个函数查看 二、标识符命名规则: 1、标识符由字母、数字、下划线、中文 2、开头的字符不能使数字 >>> 1abc=100 File "...(判断是否是同一个对象): is , is not a is b --> id(a)==id(b) 运算符的优先级: 括号() > 乘方 > 乘法除法 > 自左向右顺序计算 四、特殊字符 1、注释符..., 2, 5, 7, 10, 13, 23] >>> sorted(num,reverse=True) [23, 13, 10, 7, 5, 2, 1] list.conut(obj)# 对元素进行计数...>>> n=[1,2,1,2,1,2,3,4,5,2] >>> n.count(2) 4 list.index(obj)# 第一个查找到元素所在位置 >>> n [1, 2, 1, 2, 1, 2,...# 例如结果是print('小明的职业是程序员,目前22岁,在北京工作每个月能拿10000') print('%s的职业是%s,目前%s岁,在%s工作每个月能拿%s'%("小明","程序员",22,"北京

    97231

    MySQL 时间类型 datetime、bigint、timestamp,选哪个?

    摘要 本篇博客将深入讨论在MySQL数据库中选择合适的时间类型:datetime、bigint和timestamp。...MySQL提供了几种时间类型,其中datetime、bigint和timestamp都有自己的用途和限制。...本文将帮助您了解这些时间类型的优势、劣势以及最佳应用场景,以便您在设计数据库时做出明智的选择。...bigint: 特性: bigint存储整数,适合存储UNIX时间戳(从1970年1月1日开始的秒数)。 适用场景: 适合在不同数据库间存储时间时,使用统一的时间表示方法。...(如通过时间范围查找或者排序等),推荐使用bigint,如果时间字段不需要进行任何操作,推荐使用timestamp,使用4个字节保存比较节省空间,但是只能记录到2038年记录的时间有限

    2.3K10

    MYSQL 索引优化

    优化和索引 提升SELECT 的最好方式是使用索引。索引条目作为表数据行的指针,使得查询能够很快的定位到所要查找的数据。所有的MySQL数据类型都可以创建索引。...如果不使用索引,MySQL则需要从第一个数据行开始查找整个数据表,直到找到要查找的数据行,表越大,查找成本越高。如果查找条件的列存在索引,那么MySQL就可以快速定位需要查找的数据位置。...例外情况:基于R-trees的空间数据索引;MEMORY引擎的HASH索引;InnoDB 的基于倒序列表的全文索引。 MySQL 使用索引的操作情景: Where条件查找。 快速排序干扰数据。...索引只能创建在列全部的值上,而不能使用列部分值。 对于Innodb单表上的特定类型的全文索引,MySQL会有些优化以优化查询: FULLTEXT 查询只返回文档ID,或者文档ID和查询评级。...这一情况影响ref (非唯一索引查找)类型访问中类似tbl_name.key = expr形式的条件查询,MySQL在条件值为expr 为 NULL时,将不会再访问表数据,因为条件永远不成立。

    99630

    Mysql索引

    简介 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。...因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。...类别 普通索引index :加速查找 唯一索引 主键索引:primary key :加速查找+约束(不为空且唯一) 唯一索引:unique:加速查找+约束 (唯一) 联合索引 primary...3个索引 (nickname) (nickname,account)(nickname,account,created_time) 在使用查询的时候遵循mysql组合索引的”最左前缀”,下面我们来分析一下...基数根据被存储为整数的统计数据来计数,所以即使对于小型表,该值也没有必要是精确的。基数越大,当进行联合时,MySQL使用该索引的机会就越大。

    1.9K10

    短网址系统

    然后,拿这个新生成的短网址,在MySQL 数据库中查找。 如果没有找到相同的短网址,表明,这个新生成的短网址没有冲突。...然后把计算得到的哈希值,跟原始网址拼接了特殊字符串之后的文本,一并存储在MySQL数据库中。 当用户访问短网址的时候,短网址服务先通过短网址,在数据库中查找到对应的原始网址。...如果查找不存在,说明这个新生成的短网址没有冲突。再执行写入短网址和对应原始网页的SQL语句就可以了。通过先查询布隆过滤器,总的SQL语句的执行次数减少了。 3. 如何通过ID生成器生成短网址?...3.2 如何实现高性能的 ID 生成器? 实现ID生成器的方法有很多,比如利用数据库自增字段。当然我们也可以自己维护一个计数器,不停地加一加一。...但是,一个计数器来应对频繁的短网址生成请求,显然是有点吃力的(因为计数器必须保证生成的ID不重复,笼统概念上讲,就是需要加锁)。如何提高ID生成器的性能呢?

    3.8K10

    MongoDB 聚合索引应用

    除了基本的查询之外,聚合索引还可以支持更复杂的聚合操作,如分组统计和数据分析。...例如,假设我们有一个包含订单信息的集合 orders,每个文档包含以下字段:order_id:订单号customer_id:客户IDorder_date:订单日期total_amount:订单总金额items...:订单商品列表我们可以使用聚合索引来对订单进行分组,按照客户ID和订单日期进行分组,并统计每个客户在每个月的订单数量和订单总金额。...: 1, total_amount: 1 } }])上面的聚合操作将订单按照客户ID、年份和月份进行分组,统计每个客户在每个月的订单数量和订单总金额。...其中,$group 操作将订单分组并统计数量和金额,$project 操作将结果进行投影,只保留需要的字段。

    63410

    抖音面试题:遇到连续问题怎么办?

    【面试题】 有一张“用户登陆记录表”,包含两个字段:用户id、日期。 【问题】查询2021年每个月,连续2天都有登陆的用户名单。 【解题步骤】 1....子查询 用户每次连续登陆天数与用户登陆顺序存在某种必然的关系,此时我们可以先用子查询将用户在本月的阅读顺序查询出来,使用窗口函数row_number: select *, lead(日期...2.考查对子查询的了解 3.考查对连续问题的了解,可以套用万能模板 【举一反三】 【问题】查询2021年每个月,连续5天都有登陆的用户数。...与原题的区别在于: 1)“连续2天”变成了“连续5天”:对最后的where条件进行修改; 2)查询“用户名单”变成了“用户数”:用户group by和count(distinct 用户id)计算用户数。...select 月, count(distinct 用户id) as 连续5天登陆的用户数 from ( select *, 每个月登陆顺序 - coalesce(lag(每个月登陆顺序

    1K20
    领券