【SQL】— 面试SQL,订单金额统计
面试题中的一道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,订单金额统计相关推荐
- 每天一道大厂SQL题【Day06】电商购买金额统计实战
每天一道大厂SQL题[Day06]电商购买金额统计实战 大家好,我是Maynor.相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面 ...
- 每天一道大厂SQL题【Day03】订单量统计
每天一道大厂SQL题[Day03]订单量统计 大家好,我是Maynor.相信大家和我一样,都有一个大厂梦,作为一名资深大数据选手,深知SQL重要性,接下来我准备用100天时间,基于大数据岗面试中的经典 ...
- sql统计各科成绩大于平均分的人_数据分析师SQL面试必备50题
以下是SQL面试必备的经典的50道题目,每道题都有博主本人的解题思路和对应的SQL语句. 每道题的思路与答案均为博主本人主观理解,仅供参考. 环境:MySQL8.0 可视化工具:Navicat 1.查 ...
- mysql 根据分数分等级_数分面试-SQL篇
前言 文中部分SQL,可能考虑不全面,欢迎大家指正 文章结构: 1.SQL中的进阶函数-窗口函数 2.拼多多面试题 case专题-商品订单数据 case专题-活动运营数据 case专题-用户行为路径分 ...
- 程序员 sql面试_非程序员SQL使用指南
程序员 sql面试 Today, the word of the moment is DATA, this little combination of 4 letters is transformin ...
- sql基础教程亚马逊_针对Amazon,Apple,Google的常见SQL面试问题
sql基础教程亚马逊 SQL is used in a wide variety of programming jobs. It's important to be familiar with SQL ...
- abap 取日期最大_Pointer干货分享:SQL面试50题思路解答与分类整理(下)CASE与日期函数...
这是POINT小数点的第 368篇文章点点写在前面:SQL技能是数据分析师面试中必不可少的环节,小数点数据社区也给大家提供了练习SQL题目的地方,以下是pointer Yongfan整理的SQL50题 ...
- 50个常用的笔试、面试sql语句
50个常用的笔试.面试sql语句 2015-10-25 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) ...
- max日期最大值为0_【SQL】SQL面试50题思路解答与分类整理(下)CASE与日期函数...
题目快速查找索引 阅读指南 上篇 [第一部分]聚合函数(sum/avg/count/min/max) [第二部分]表连接(inner join/left join/right join/full jo ...
最新文章
- linux pureftp mysql_在Ubuntu下安装apache2+php5+mysql5+pureftp+ftp
- SAP零售:补货 Vs 多步骤补货
- Ubuntu mysql数据库导入sql文件
- JavaScript的AMD规范
- mysql与java连接查询_【java】MySQL数据库之连接查询
- Leetcode题库 94.二叉树的中序遍历(递归 C实现)
- C#LeetCode刷题之#874-模拟行走机器人​​​​​​​(Walking Robot Simulation)
- LeetCode 134 Gas Station
- git 实践之冲突管理
- 定义或修改本地屏幕元素的注释
- 军工产品元器件筛选标准,军用品测试实验室
- 什么是弱密码,如何避免
- 基于STM32的步进电机驱动设计
- 【设计模式】设计模式 网站推荐
- 眼底视网膜血管增强方法(四)Frangi滤波
- 【docker】docker重新加载nginx配置
- java线性表实验心得_20162311 实验一 线性结构 实验报告
- PS抠章、去水印-你懂得
- nginx cache 总结
- 小米4s刷 android7,小米 MI 4S(小米4S 全网通 安卓7.0)获取Root权限服务含精简系统方案...