数据分析SQL
文章平均质量分 61
Kay大
专注于机器学习,SQL,数据分析思维方向。少年太弱,请专心练剑!
展开
-
【Kay】MySQL日期函数总结
1、获得当前日期+时间:NOW() SELECT NOW() 2、获得当前日期:CURDATE() SELECT CURDATE() 3、查一下日期列 SELECT set_time FROM sys.sys_config; 4、日期格式转化:DATE_FORMAT(time, '%Y-%m-%d') SELECT DATE_FORMAT(set_time, '%Y-%m-%d') FROM sys.sys_config; 5、日期的加减:DATE_AD原创 2022-05-16 14:15:51 · 318 阅读 · 0 评论 -
【Kay】留存率相关题目
一、什么是留存 以12月1日的新增用户为例,如果12月2日也登录了,就算做次日留存;如果12月3日又登录了,就算做三日留存;12月6日再次登录,就算作7日留存 二、SQL实现 计算留存率只需要2个字段:用户ID (user_id) 和 登录日期 (login_time) t_user_login:表名 user_id: 用户id,也可用设备ID等 login_time:登录日期时间,例如:2020-05-25 16:03:05 ...原创 2022-04-15 20:03:30 · 400 阅读 · 0 评论 -
【Kay】SQL行转列、列转行
行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 的运算符PIVOT来实现 计算学生平均成绩的代码: SELECT id, AVG(score) FROM student GROUP BY id; 1)长表: 2)宽表: 考察的问题就是通过SQL语句实现这两种形态转换,长表转宽表即行转列,宽表转长表即列转行 01 行转列:sum+if 行转列,经典的解决方案有3个 ①条件聚合,即 sum+if 组合。SQL实现行转列的写法如下: ..原创 2022-04-10 22:33:19 · 319 阅读 · 0 评论 -
【真】遇到的SQL题
【字节】 3月:order表如下,找出连续登录7天的用户 SELECT id, COUNT(*) FROM( SELECT *, date0 – rk FROM( SELECT *, ROW_NUMBER() OVER(PARTITION BY id, ORDER BY date0) AS rk FROM( SELECT id, DISTINCT DATE(date) AS date0 FROM order )a)b)c GROUP BY id HAVING COUNT(*) >原创 2022-04-02 22:18:12 · 78 阅读 · 0 评论 -
【Kay】明日头条新闻SQL题
1.2021年11月每天的人均浏览文章时长 统计2021年11月每天的人均浏览文章时长(秒数),结果保留1位小数 SELECT DATE_FORMAT(in_time,"%Y-%m-%d") AS dt, ROUND(SUM(TIMESTAMPDIFF(SECOND,in_time,out_time))/COUNT(DISTINCT uid),1) AS avg_viiew_len_sec FROM tb_user_log WHERE MONTH(in_time) = 11 AND artical_.原创 2022-03-19 21:06:06 · 201 阅读 · 0 评论 -
【Kay】某音SQL题目
1.各个视频平均完播率 计算有播放记录的每个视频的完播率(结果保留三位小数),并按完播率降序排序 SELECT u.video_id, ROUND(SUM(IF(TIMESTAMPDIFF(SECOND,start_time,end_time) >= duration,1,0))/COUNT(start_time),3) AS avg_comp_play_rate FROM tb_user_video_log u INNER JOIN tb_video_info v ON u.v.原创 2022-03-18 21:56:23 · 326 阅读 · 0 评论 -
【Kay】SQL窗口函数题目
一、每类试卷得分前3名 现有试卷信息表examination_info 试卷作答记录表exam_record 请找到每类试卷得分的前3名,如果两人最大分数相同,选择最小分数大者,如果还相同,选择uid大者 实例结果: 代码如下: SELECT te.tid,uid,ranking FROM( SELECT tag AS tid, uid, ROW_NUMBER() OVER(PARTITION BY tag .原创 2022-03-07 21:19:37 · 293 阅读 · 0 评论 -
【Kay】SQL窗口函数学习
一.窗口函数 引入: 排名问题:每个部门,分别内部按业绩排名 topN问题:找出每个部门排名前N的员工进行奖励 面对这类需求,就需要使用sql的高级功能窗口函数了 窗口函数,也叫OLAP函数(Online Anallytical Processing,联机分析处理),可以对数据库数据进行实时分析处理 窗口函数的基本语法: <窗口函数> OVER (PARTITION BY <用于分组的列名> ORDER BY <用于排序的原创 2022-03-07 15:54:59 · 312 阅读 · 0 评论 -
【Kay】SQL聚合函数和分组查询
1.截断平均值 请从exam_record数据表中计算所有用户完成SQL类别高难度试卷得分的截断平均值(去掉一个最大值和一个最小值后的平均值) SELECT tag,difficulty, ROUND((SUM(score)-MAX(score)-MIN(score))/(COUNT(score)-2),1) FROM exam_record r LEFT JOIN examination_info i ON r.exam_id = i.exam_id WHERE tag = "SQL" AND sc原创 2022-02-27 21:14:29 · 403 阅读 · 0 评论 -
【Kay】SQL建表操作,索引增删
表的创建、修改与删除 1.1 直接创建表: 1 2 3 4 5 6 7 8 9 10 11 12 13 CREATE TABLEjohn (column_name1 data_type1 -- 列名和类型必选 [ PRIMARY KEY -- 可选的约束,主键 | FOREIGN KEY -- 外键,引用其他表的键值 | AUTO_...原创 2022-02-27 18:16:23 · 167 阅读 · 0 评论 -
【Kay】SQL增删改操作、表的创建与修改
一、增加行 1.增加两行 牛客后台会记录每个用户的试卷作答记录到exam_record表,现在有两个用户的作答记录详情如下: 用户1001在2021年9月1日晚上10点11分12秒开始作答试卷9001,并在50分钟后提交,得了90分; 用户1002在2021年9月4日上午7点1分2秒开始作答试卷9002,并在10分钟后退出了平台。 INSERT INTO exam_record(uid,start_time,exam_id,submit_time,score) VALUES (1001,'20原创 2022-02-27 17:45:43 · 556 阅读 · 0 评论 -
【Kay】MySQL综合题——复旦浙大练题情况
1.运营想要了解复旦大学的每个用户在8月份练习的总题目数和回答正确的题目数,请取出相应明细数据,对于在8月份没有练习过的用户,答题数结果返回0 SELECT u.device_id, u.university, COUNT(question_id) AS question_cnt, SUM(IF(result="right",1,0)) AS right_question_cnt FROM user_profile u LEFT JOIN ques.原创 2022-02-26 22:18:39 · 307 阅读 · 0 评论 -
【Kay】MySQL必会常用函数
1.条件函数 CASE WHEN 运营想要将用户划分为25岁以下和25岁及以上两个年龄段,分别查看这两个年龄段用户数量 SELECT CASE WHEN age<25 OR age IS NULL THEN "25岁以下" WHEN age>=25 THEN "25岁及以上" END AS "age_cut",COUNT(*) AS "number" FROM user_profile GROUP BY age_cut 2.日期函数 1. 运营想要计算出2021年8月每天.原创 2022-02-26 19:41:13 · 320 阅读 · 0 评论