面试题中的一道sql题,比较考察对sql函数的掌握程度,记录一下,方便学习。

需求:

一张客户表 tb_cust 如下:

CUST_ID varchar(30) 客户编号(primary key)
CERTIFICATE_NO varchar(18) 身份证号(not null)

一张订单表tb_oreder 如下:

CUST_ID varchar(30) 客户编号
APPLY_ID varchar(50) 订单编号(primary key)
AMOUNT double 订单金额

根据上面两张表提供的信息,写出如下效果图所示的sql语句。

注意:

1.年龄信息没有具体提供。

2.不能使用 union 等连接字符。

答案如下:

select case when k.flag = 1 then '30岁以下' when k.flag = 2 then '30-50岁之间' when k.flag = 3 then '50岁以上' ELSE '总计' end as'年龄区间',COUNT(DISTINCT(a.cust_id)) as '客户数量',COUNT(k.flag) as '订单数量', SUM(AMOUNT) as '订单总额' from tb_oreder a left join (select c.cust_id,IF(c.age < 30,1,IF(c.age<50,2,3)) as flag from (select cust_id,FLOOR(PERIOD_DIFF(EXTRACT(YEAR_MONTH from NOW()),substring(CERTIFICATE_NO FROM 7 FOR 6))/12) as age from tb_cust) c)k on a.CUST_ID = k.CUST_ID GROUP BY k.flag WITH ROLLUP;

知识点整理:

1.Mysql中的with rollup是用来在分组统计数据的基础上再进行统计汇总,即用来得到group by的汇总信息。

2.if函数:if(a > b ? true : false)效果等同于java中的三目运算符。

3.PERIOD_DIFF(P1,P2):计算周期P1和P2之间的月数。 P1和P2格式为YYMM或YYYYMM。注意周期参数 P1 和 P2 都不是日期值

4.mysql的 substring(str from pos for len) 起点从1开始。例如:当str为身份证号:37152719990101034时,substring(str from 7 for 6)的值为:199101

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/graylf/article/details/80275021

【SQL】— 面试SQL,订单金额统计相关推荐

  1. 每天一道大厂SQL题【Day06】电商购买金额统计实战

    每天一道大厂SQL题[Day06]电商购买金额统计实战 大家好,我是Maynor.相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面 ...

  2. 每天一道大厂SQL题【Day03】订单量统计

    每天一道大厂SQL题[Day03]订单量统计 大家好,我是Maynor.相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典 ...

  3. sql统计各科成绩大于平均分的人_数据分析师SQL面试必备50题

    以下是SQL面试必备的经典的50道题目,每道题都有博主本人的解题思路和对应的SQL语句. 每道题的思路与答案均为博主本人主观理解,仅供参考. 环境:MySQL8.0 可视化工具:Navicat 1.查 ...

  4. mysql 根据分数分等级_数分面试-SQL篇

    前言 文中部分SQL,可能考虑不全面,欢迎大家指正 文章结构: 1.SQL中的进阶函数-窗口函数 2.拼多多面试题 case专题-商品订单数据 case专题-活动运营数据 case专题-用户行为路径分 ...

  5. 程序员 sql面试_非程序员SQL使用指南

    程序员 sql面试 Today, the word of the moment is DATA, this little combination of 4 letters is transformin ...

  6. sql基础教程亚马逊_针对Amazon,Apple,Google的常见SQL面试问题

    sql基础教程亚马逊 SQL is used in a wide variety of programming jobs. It's important to be familiar with SQL ...

  7. abap 取日期最大_Pointer干货分享:SQL面试50题思路解答与分类整理(下)CASE与日期函数...

    这是POINT小数点的第 368篇文章点点写在前面:SQL技能是数据分析师面试中必不可少的环节,小数点数据社区也给大家提供了练习SQL题目的地方,以下是pointer Yongfan整理的SQL50题 ...

  8. 50个常用的笔试、面试sql语句

    50个常用的笔试.面试sql语句 2015-10-25  Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) ...

  9. max日期最大值为0_【SQL】SQL面试50题思路解答与分类整理(下)CASE与日期函数...

    题目快速查找索引 阅读指南 上篇 [第一部分]聚合函数(sum/avg/count/min/max) [第二部分]表连接(inner join/left join/right join/full jo ...

最新文章

  1. linux pureftp mysql_在Ubuntu下安装apache2+php5+mysql5+pureftp+ftp
  2. SAP零售:补货 Vs 多步骤补货
  3. Ubuntu mysql数据库导入sql文件
  4. JavaScript的AMD规范
  5. mysql与java连接查询_【java】MySQL数据库之连接查询
  6. Leetcode题库 94.二叉树的中序遍历(递归 C实现)
  7. C#LeetCode刷题之#874-模拟行走机器人​​​​​​​(Walking Robot Simulation)
  8. LeetCode 134 Gas Station
  9. git 实践之冲突管理
  10. 定义或修改本地屏幕元素的注释
  11. 军工产品元器件筛选标准,军用品测试实验室
  12. 什么是弱密码,如何避免
  13. 基于STM32的步进电机驱动设计
  14. 【设计模式】设计模式 网站推荐
  15. 眼底视网膜血管增强方法(四)Frangi滤波
  16. 【docker】docker重新加载nginx配置
  17. java线性表实验心得_20162311 实验一 线性结构 实验报告
  18. PS抠章、去水印-你懂得
  19. nginx cache 总结
  20. 小米4s刷 android7,小米 MI 4S(小米4S 全网通 安卓7.0)获取Root权限服务含精简系统方案...

热门文章

  1. PHP获取今日、昨日、本周、上周、本月、上月、本季、上季、今年、去年
  2. Python开发学习之Python和Excel的数据实现互通
  3. MySQL函数之字符串函数
  4. PID=4被占用解决办法
  5. leetcode每日一题——T70. 爬楼梯(易):斐波那契公式
  6. 关于楼板和梁分割的基本内容
  7. Python+Qt掌纹识别
  8. 如何设置苹果手表6,才能解决充电慢、掉电快问题
  9. comsol5.1 安装选项 自用
  10. Spring实战之bean重复、指定bean的名字、消除bean的歧义性