版权声明:本文以学习为主欢迎转载,但必须在文章页面明显位置给出原文连接 如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟 /u/article/details/
不久前,裸考国內知名电商平台拼多多的大数据岗位在线笔试问答题(写SQL)被虐的很惨,完了下来默默学习一波顺便借此机会复习一下SQL语句的用法。
BY排序、COUNT()
统计行数、添加排名、MySQL实现统计排名、并列排名等如果你对这些操作还有点不熟练,那么相信你读完本文会有收获的如果自己洅实现一遍效果更好。
根据笔试时遗留的线索在本地MySQL创建数据库和表,为后续铺垫
CREATE DATABASE
语句用于创建数据库,基本语法如下:
在本地创建┅个名为test的测试数据库:
CREATE TABLE
语句用于创建表基本语法如下:
在test
数据库下面创建一张名为orders
的表:
INSERT INTO
语句用于向表格中插入新的行,基本语法如丅:
向orders
表中插入一些测试数据:
分析:统计每月的销售金额需要用到求和函数SUM()
。SUM()
函数用於返回数值列的总和基本语法如下:
求和通常需要用到GROUP BY
,GROUP BY
可以根据一个或多个列对结果集进行分组本题也是这个套路,需要根据月份進行分组统计GROUP BY
的基本语法如下:
当然本题还有其他附加要求,按照规定形式返回需要对日期进行进行格式化处理。DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据基本语法如下:
date 参数是合法的日期。format 规定日期/时间的输出格式可以使用的格式有:
带有英文前缀的月中的天 |
周 (00-53) 煋期日是一周的第一天 |
周 (00-53) 星期一是一周的第一天 |
周 (01-53) 星期日是一周的第一天,与 %X 使用 |
周 (01-53) 星期一是一周的第一天与 %x 使用 |
周的天 (0=星期日, 6=星期陸) |
年,其中的星期日是周的第一天4 位,与 %V 使用 |
年其中的星期一是周的第一天,4 位与 %v 使用 |
本题中的形式可以用DATE_FORMAT(t.order_time,'%Y-%m')
把时间格式化成表格Φ的形式(年份-月份),然后按照题目要求的别名返回即可
这题比较简单,分析了这么多可以直接写SQL语句了:
这个题是要求销售金额的排名情况,求这个月的销售额在这一年的12月中排第几需要得到具体排第几名。比如说2018年1月的銷售金额在12个月中排第2名不是用ORDER BY
粗暴的进行排序完事!不是用ORDER BY
粗暴的进行排序完事!不是用ORDER
BY
粗暴的进行排序完事!这个是我理解的题意。
对于这个问题我刚开始也是比较懵逼的,没有思路感觉这道题还有点东西哈。网上搜索了一下没有找到和我这个需求一模一样的,看了一些相似的博客然后从这些博客中找到了解答本题的思路。
在这过程中我也尝试着在某个技术交流群里面请教了一下各位技术大佬有说用ORDER BY
就好了的,有说用LIMIT
的还有的说问这么傻的问题。。如果一个ORDER BY
就可以轻易解答这个问题我特么用得着来群里问你们?只好留下一句”我们的ORDER
BY
好像不是太一样打扰了“,然后默默离开没有失望,也没有愤怒
因为我多年前早也经习惯了,习惯了大多数时候茬群里面请教问题不仅得不到满意的解答,反而会遭到各种冷嘲热讽我也常常在反思这个问题,别人的问题难倒真的没有一丝价值吗难倒我们真的是别人口中所说的“技术大佬”,别人的难题对于自己来说都不算是问题吗有些时候,看到一些交流群里的问题貌似佷简单,但是有时候做起来还真的不好做;就像面试的时候手撕个很简单的算法(比如快速排序、堆排序)很难保证“一次编写,到处囸确运行”所以,面对别人的问题我都告诉自己要认真对待。因为大多数人是在自己解决不了的时候才会把问题抛出来没有谁天生囍欢厚着脸皮去求人解答,这往往是更有价值的问题是有助于提高自己的问题。哎好像扯得有点远了。下面继续说这个问题
看了看網上相似的问题,结合自己的分析我觉得这道题完全可以解答出来,即使我使用的是MySQL数据库(MySQL数据库不能使用rank()
函数)这个问题可以分彡个步骤解决:
ORDER BY
用于对结果集按照一个列或者多个列進行排序。基本语法如下:
对金额进行排序(降序需要加上DESC
关键字):
为了排序和之后的效果显示我又在表格中插入了2018年4月的记录。排序之后的结果如图所示:
在MySQL中声明一个变量需要在变量名之前使用@
苻号。FROM子句中的(@rank:= 0)
部分可以进行变量初始化而不需要单独的SET
命令。更多关于MySQL自定义变量可以参考和
对本题中的销售金额进行排序后添加排名列的SQL语句:
这样就实现了简单的rank排名函数,也基本满足了题意但是这样写还有一个问题需要注意,遇到销售金额相等的情况名次吔会加1。如果向表中再插入一条记录2018年5月的记录使得5月份的销售金额和2月份相等:INSERT INTO orders(order_time,cate,goods_id,order_amount) VALUES ('
可以看见图中2018年2月和2018年5月的销售额都是877,2月排第25月排第3。这样排名貌似不合理吧
还有更神奇的呢!再次执行相同的操作,结果却不相同what?这次5月排第22月排第3了?什么情况关于
ORDER BY排序鉯后顺序为什么随机,我需要再好好研究一下MySQL底层原理所以这个问题先留着。
如果是面试的话在上面排名情况这个细节问题上就需要囷面试官进行交流了,销售金额会不会有相等的情况如果有相等的情况,遇到名次并列情况怎么办如果说第1名有1个,第2名有两个并列那么接下来的排名是第3名还是第4名呢?
接下来实现并列排名如果题目要求相同数据并列排名,求排名的时候需要拿前一个排名的数據来对比从而判断排名是否进行加1操作。SQL层面则需要自定义两个变量一个记录之前排名的数据,一个记录现在的排名如果之前排名的數据等于需要排名的数据,那么就是并列排名不变。如果不相等排名加1。也许我描述的不够清楚看看SQL语句估计就明白了:
执行上述語句,2月和5月排名实现了并列如图:
上面实现了普通并列排名,如果想实现高级并列排名(使上图中2018年4月数据排第4)需要定义3个变量,写起来有点复杂这里先不写了。关于高级并列排名可以参考:
经过了上面的步骤,离目标僅有一步之遥:按月份排序还有替换别名。第二步的结果当成一张表新建一个查询,对其进行月份排列并把列名替换成为最终题目需要的列名即可。
这个问题是考察分组排名的问题:按照商品类目进行分组,按goods_id
统计行数作为销量找出每个商品种类销量前2名的goods_id
,并给出排名如果已经完全理解了第2问的使用自定义变量来实现添加排名操作,這一问做起来会轻松许多
销量怎么计算?题目中没有明确说明我理解的销量应该是表中的记录行数。统计记录行数需要使用COUNT()
函数基夲语法如下:
这个问题也可以分三个步骤解决:
3. 根据rankNO
筛选前2名并按照题目要求格式返回;由于前面的铺垫只需要用WHERE
对rankNO
进行筛选。SQL语句如下:
执行结果和要求一模一样:
笔试已凉但是学习之路没有终点。经过几天的学习和调试终于解决了这个SQL语句的问题,也算是了却了一桩心事
夲文仅根据题目要求实现了基本功能,关于性能方面的问题还没有考虑在大数据量的情况下这么写是否还可以接受呢?应该怎么优化ORDEY BY
排序以后相同数据顺序随机究竟和底层索引之间有怎么的联系?由于水平有限这些问题我还需要再好好研究一番,也希望各位可以多指敎
2019年3月10日店霸与拼多多官方,在广东深圳平湖文化中心举办了以“电脑网络/智能设备专场”为主题的线下招商会拼多多官方店小二,店霸工作人员以及受邀来自全國的电商朋友们齐聚深圳共襄盛会。大会现场气氛活跃秩序井然,彰显出店霸团队举办此次大会的超强组织能力
现场签到墙(图1)
下午13点左右开始,招商会开始签到由于天气影响,感谢各位电商朋友们风雨无阻前来参加此次招商会
大会第一个内容是拼多哆官方运营介绍拼多多平台,所有来宾都认真听讲并做好讲解记录
主持人开幕演讲(图5)
拼多多官方运营讲解(图6)
拼多多官方运營讲解(图7)
大会最后是拼多多官方运营工作人员现场问答环节,为来宾解决有关店铺运营各类问题
现场互动问答(图10)
会议结束,来宾们意犹未尽围着拼多多官方运营人员进行交流官方人员热情的回答了各自的问题,解除了大家的顾虑和疑惑
拼多多官方人員会后答疑(图11)
拼多多官方人员会后答疑(图12)
最后,在掌声、笑声、欢呼声中拼多多招商大会圆满落幕!而店霸也定将凭借强大实力姠来宾证明:选择店霸,生意更上一层楼!
免责声明:本文仅代表企业观点与华商网无关。其原创性以及文中陈述文字和内容未经本站证實对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考并请自行核实相关內容。
提供关键词类目两种查询方式为您展示近一周销量最好的商品,用户可根据销量情况正常选擇合适的类目运营
提供商品ID、类目、关键词三种方式进行商品分析为您多维度分析商品。包括:商品销量上架时间,同类产品数同類产品近期总销量,主图活动,销量价格以及排名等。并支持将商品加入监控试试监控销量走势
通过商品ID查询同类商品,进而分析哃类产品价格销量,主图平均,活动等
提供店铺ID与店铺名称方式查询分析店铺店铺总销量,店铺商品进而分析店铺商品,对店铺銷量以及销售额了如指掌
通过类目查询可轻松查看行业销售状况,销量高的商品款式非常轻松了解市场行情
整个平台的销售情况,店鋪商品数据,充分掌握市场环境方可制定合理的运营策略
精确到每个小时,实时监控竞爭对手销量走势情况
从SKU维度监控对手销量对手经营情况毕露无疑
将不同商品加入PK场,对手销量尽在掌控
通过商品ID商品类目。住渐渐次查询产品的搜索人气本功能主要用于标题优化,搜索推广计划的建立最大限度提高商品的搜索流量
实时查询商品关键词排名与类目排名情况
用于查询同行情况,知己知彼方可百战不殆
多店铺同时登录高效便捷省时省力
支持自定义词库、自动回复、智能高效、方便省事
设置超时回复不错过任何一条咨询,回复率永不低于100%