mysql
天山下小花家
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
根据商品大类对商品按金额从小到大排序 -- SQL面试题
需求:根据商品大类对商品按金额从小到大排序,前30%为低档,30% 80%为中档,高于80%为高档,打上标签数据:商品大类 商品名称 商品金额 商品档次标签手机 华为mate 2999手机 苹果iPhoneX 699手机 vivo NEX 3000手机 诺基亚7920 583食品 蛋黄酥 10食品 吐司切片蛋糕 32食品 丹麦手撕糕点美食 19.9思路:1、先分组后降序,并利用窗口函数组内排序2、新建一张表取出每个组最大排序值3、与产品表左连接后,通过排序值与最大值来计算排序占比原创 2021-03-17 23:14:11 · 1537 阅读 · 0 评论 -
用户单次在线最长时间 -SQL面试题
思路:正常情况下,用户登陆、退出时间是挨着的1、根据用户id分组后时间降序排列2、用窗口函数 lead()over()将时间向上平移3、计算时间与平移后的时间差4、用户分组后,计数后取出最大值/*INSERT into log_time values('A',0,'2019-01-01 12:25:30'),('A',1,'2019-01-01 15:25:30'),('A',0,'2019-01-03 10:25:30'),('B',0,'2019-01-02 12:25:30').原创 2021-03-17 23:07:39 · 550 阅读 · 0 评论 -
用户3年内不同级别违法次数 -- SQL面试题
思路:三年内应该是指用户取得驾照后的3年内,不同年份不同违法次数的分布。第一步,按用户分组,违法时间降序排列;第二步,违法表与用户信息表关联第三步,计算违法时间与取证时间之间的差值第四步,筛选出时间差小于等于3年的,分组后,计数/*insert into `用户表`VALUES(10023,'2015-04-21');insert into `违法表`VALUES(10023,'一级','2017-04-21 14:20:20'),(10023,'二级','2016-04-21.原创 2021-03-17 23:01:35 · 385 阅读 · 0 评论 -
取部门工资前三高的所有员工 -- sql 面试(三)
取部门工资前三高的所有员工两种思路:1、对于这种分组内取前几名的问题,可以先group by然后用having count()来筛选,比如这题,找每个部门的工资前三名,那么先在子查询中用Employee和自己做连接,连接条件是【部门相同但是工资比我高】,那么接下来按照having count(Salary) <= 2来筛选的原理是:如果【跟我一个部门而且工资比我高的人数】不超过2个,那么我一定是部门工资前三,这样内层查询可以查询出所有符合要求的员工ID,接下来外层查询就简单了。select d原创 2021-03-04 12:26:38 · 911 阅读 · 1 评论 -
每日新老客户数统计--sql 常见面试题(二)
按购买时间统计出每天的新客人数和老客人数名词定义如下:新客:当天有购买,且之前没有购买的人为新客,新客人数+1老客:当天有购买,且之前也有购买的人为老客,老客人数+11)每个用户最近一次购买日期SELECT cust_id,create_at FROM( SELECT *, ROW_NUMBER() OVER (PARTITION BY custid ORDER BY created_at DESC) RowIndex FROM 订单表) BWHERE原创 2021-03-01 16:47:50 · 5016 阅读 · 0 评论 -
SQL 行列转置 -- 常见面试题(一)
常见面试题如下:先来分析一下:第一步将course 里面的课程转换为列标题,常用 case when 就能解决。SELECT `学号`, max((case when `课程号`='0001' then `成绩` end )) as '语文', max((case when `课程号`='0002' then `成绩` end )) as '数学', max((case when `课程号`='0003' then `成绩` end原创 2021-03-01 11:43:52 · 330 阅读 · 0 评论 -
通过面试题复盘sql初阶及高阶知识
标题一、数据获取–增删改查1、创建表// 课程表 --主表create table subject(id int not null,subject varchar(200));//学生表-- 从表create table student(id int not null identity(1,1) primary key,//主键自增长 auto_increment/identity(1,1)name char(20) not null,sex char(20) not null de原创 2021-02-28 18:49:02 · 428 阅读 · 1 评论 -
数据分析 -- 共享汽车运行 案例 (sql 分组后组内运算)
最近接触到一些交通行业的数据,用来练手主要就解决计算以下几个指标:1、接单率2、订单完成率3、接单平均时长4、第二天继续呼叫的比例原始数据及字段如下:一、用sql 实现以下计算1、接单率、订单完成率SELECT sum(case when grab_time = '1971-01-01 00:00:00' then 0 ELSE 1 END)/count(*) as 接单率,...原创 2020-02-20 09:20:30 · 1101 阅读 · 0 评论 -
mysql 、python 时间字符串之间转化
一、mysqlSELECT NOW(); #显示当前日期+时间 2020-02-16 22:10:36 SELECT date(now());#显示当前日期 2020-02-16SELECT date('2018-1-1');SELECT CURRENT_DATE();#显示当前日期2020-02-16SELECT CURRENT_time();#显示当前时间22:10:36 SE...原创 2020-02-16 23:07:45 · 2400 阅读 · 0 评论 -
mySQL求中位数、众数
mysql 取中位数、众数-- 求众数SELECT score, count(score) from scores GROUP BY scoreHAVING count(score) >=(SELECT max(a.b) from (SELECT count(score) as b from scoresGROUP BY score) a )-- 求中位数-- 申明...原创 2020-01-13 18:13:28 · 2820 阅读 · 0 评论
分享