鱼C论坛

 找回密码
 立即注册
查看: 1409|回复: 0

MYSQL(面试真题)【滴滴2020】

[复制链接]
发表于 2020-7-24 14:52:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
参考链接:https://mp.weixin.qq.com/s?__biz ... =21#wechat_redirect


  1. USE train;
  2. #1. 订单的应答率,完单率分别是多少?
  3. #创建表
  4. DROP TABLE IF EXISTS 订单信息表;
  5. CREATE TABLE 订单信息表(
  6.         order_id INT,
  7.         passenger_id INT,
  8.         call_time TIMESTAMP,
  9.         grab_time TIMESTAMP,
  10.         cancel_time TIMESTAMP,
  11.         finish_time TIMESTAMP
  12. );
  13. INSERT INTO 订单信息表
  14. VALUES (70361, 0001, '2018-03-08 09:07:00', '2018-03-03 09:09:00', '1971-01-01 00:00:00', '2018-03-09 09:37:00'),
  15.         (70362, 0001, '2018-03-09 22:07:00', '2018-03-09 22:07:00', '2018-03-09 22:08:00', '1971-01-01 00:00:00'),
  16.         (70363, 0002, '2018-03-09 20:10:00', '1971-01-01 00:00:00', '2018-03-09 20:11:00', '1971-01-01 00:00:00'),
  17.         (70364, 0003, '2018-03-10 08:00:00', '1971-01-01 00:00:00', '1971-01-01 00:00:00', '1971-01-01 00:00:00'),
  18.         (70365, 0004, '2018-03-12 09:00:00', '2018-03-12 09:01:00', '1971-01-01 00:00:00', '2018-03-12 09:30:00');

  19. #(1)应答率 = 应答/呼叫 = 有效的grab / call


  20. SELECT COUNT(*) INTO @count
  21. FROM 订单信息表;

  22. SELECT COUNT(grab_time) / @count
  23. FROM 订单信息表
  24. WHERE grab_time != '1971-01-01 00:00:00';

  25. #(2)完单率 = 有效finish_time / 呼叫订单数
  26. SELECT COUNT(finish_time) / @count
  27. FROM 订单信息表
  28. WHERE finish_time != '1971-01-01 00:00:00';

  29. #2. 呼叫应答时间有多长?
  30. #有效grab_time - call_time的平均minute
  31. SELECT SUM(TIMESTAMPDIFF(MINUTE, call_time, grab_time)) / COUNT(grab_time) AS 平均呼叫应答时间
  32. FROM 订单信息表
  33. WHERE grab_time != '1971-01-01 00:00:00';

  34. #3.从这一周的数据来看,呼叫量最高的是哪一个小时(当地时间)?呼叫量最少的是哪一个小时(当地时间)?

  35. #(1)将巴西时间转为中国时间
  36. UPDATE 订单信息表 SET call_time = CAST(call_time AS DATETIME);
  37. UPDATE 订单信息表 SET grab_time = CAST(grab_time AS DATETIME);
  38. UPDATE 订单信息表 SET cancel_time = CAST(cancel_time AS DATETIME);
  39. UPDATE 订单信息表 SET finish_time = CAST(finish_time AS DATETIME);

  40. UPDATE 订单信息表 SET call_time = DATE_SUB(call_time, INTERVAL 11 HOUR);
  41. UPDATE 订单信息表 SET grab_time = DATE_SUB(grab_time, INTERVAL 11 HOUR);
  42. UPDATE 订单信息表 SET cancel_time = DATE_SUB(cancel_time, INTERVAL 11 HOUR);
  43. UPDATE 订单信息表 SET finish_time = DATE_SUB(finish_time, INTERVAL 11 HOUR);


  44. ALTER TABLE 订单信息表 ADD COLUMN call_time_hour VARCHAR(255);
  45. UPDATE 订单信息表 SET call_time_hour = DATE_FORMAT(call_time, '%H');

  46. SELECT call_time_hour, COUNT(call_time_hour) AS 总数
  47. FROM 订单信息表
  48. GROUP BY call_time_hour
  49. ORDER BY 总数 DESC
  50. LIMIT 1;

  51. #(2)呼叫量最少的是哪一个小时?
  52. SELECT call_time_hour, COUNT(call_time_hour) AS 总数
  53. FROM 订单信息表
  54. GROUP BY call_time_hour
  55. ORDER BY 总数
  56. LIMIT 3;

  57. #4. 呼叫订单第二天继续呼叫的比例有多少?
  58. #(1)次日呼叫的用户id
  59. SELECT COUNT(DISTINCT data2.passenger_id) / @count
  60. FROM 订单信息表 AS data1 LEFT JOIN 订单信息表 AS data2
  61.         ON data1.passenger_id = data2.passenger_id
  62.            AND TIMESTAMPDIFF(DAY, data1.call_time, data2.call_time) = 1;


复制代码

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 12:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表