首页
学习
活动
专区
工具
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.5K30

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

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

1.3K20

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.5K20

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

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

4.8K71

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

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

1.2K30

【黄啊码】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树是更好选择,它支持范围查找

99520

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

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

40510

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会根据统计数据来计算使用索引成本,这样一旦统计数据误差较大,那么计算出来成本误差就大,就可能出现实际走索引成本小但是计算出来是走索引成本大

17420

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

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

2.6K31

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

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

2K20

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

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

85410

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时,将不会再访问表数据,因为条件永远不成立。

98330

Mysql索引

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

1.8K10

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,"北京

95031

短网址系统

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

3.7K10

MongoDB 聚合索引应用

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

61710

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

【面试题】 有一张“用户登陆记录表”,包含两个字段:用户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
领券