题解 | #商品销售排名#

商品销售排名

https://www.nowcoder.com/practice/79c6c3d6d66946f79387bca73c0a29f4

这道题目要求我们从用户客户端日志中找出商品销售额排名前两名的商品,我们要做的事情如下:

1. 确定总体问题

我们需要计算每个商品的总销售额,并找出销售额排名前两名的商品,并返回这些商品的名称和总销售额,以销售额的逆序排列返回。

2. 分析关键问题

  • 连接表:将user_client_logproduct_info表连接起来,以便获取每个商品的价格。
  • 筛选选择记录:从user_client_log表中筛选出步骤为select的记录。
  • 计算总销售额:对每个商品的销售额进行汇总。
  • 排序和限制:按销售额降序排列,并取出前两名商品。

3. 解决每个关键问题的代码及讲解

步骤1:连接表

我们使用JOINuser_client_logproduct_info表连接起来:

from
    user_client_log u
    join product_info p on p.product_id = u.product_id
  • JOIN product_info p ON p.product_id = u.product_id:通过商品ID连接两个表,以便获取每个商品的价格。
步骤2:筛选选择记录

我们使用WHERE子句筛选出步骤为selectpay_method不为空的的记录:

where
    u.step = 'select' and pay_method is not null
  • WHERE u.step = 'select' and pay_method is not null':筛选出所有用户支付记录。
步骤3:计算总销售额

我们使用SUM函数对每个商品的销售额进行汇总,并使用CAST函数将结果转换为整数:

select 
    p.product_name,
    cast(sum(p.price) as signed) as price
  • SUM(p.price):计算每个商品的总销售额。
  • CAST(... AS SIGNED):将总销售额转换为整数。
步骤4:排序和限制

我们使用ORDER BY按销售额降序排列,并使用LIMIT取出前两名商品:

order by
    price desc
limit 2
  • ORDER BY price DESC:按销售额降序排列。
  • LIMIT 2:取出销售额最高的两个商品。

完整代码

select 
    p.product_name,
    cast(sum(p.price) as signed) as price
from
    user_client_log u
    join product_info p on p.product_id = u.product_id
where
    u.step = 'select' and pay_method is not null
group by
    p.product_name
order by
    price desc
limit 2
全部评论

相关推荐

Hakasee:我的简历和你的基本一样,上周去了上海,boss投了三百家, 三家线下面试 第一家没有做题,全是八股和项目,因为第一次面试不怎么熟练,挂了 第二家,给你几个题目(①css垂直居中文字,字体每两秒闪烁一下以及点击弹窗,②给你一个链接,实现可视化地图,③然后是八股,图片性能优化,以及对图片app有什么想法),45分钟内做完,然后老板面试) 第三家特别偏僻,有点阴森,到了之后让了一个工位给我,有四个题目,①格式化时间 年月日当前时间星期几② 正则表达式提取新闻文字,③在文本域输入文字生成选择题以及选项④生成商品排版还是什么来着 三家都是不超过50人的小公司 两家线上牛客笔试(卡伦特,七牛云,但是笔试不仅要考前端,还要考后端,算法,甚至数学题 我的建议是如果只做了这两个vue项目且不怎么熟练的情况下,先沉淀沉淀,把react学了,上海好的公司基本都是react查看图片
点赞 评论 收藏
分享
程序员小白条:这比例牛逼,750:1
点赞 评论 收藏
分享
最近拿到了正浩的提前批offer感觉自己的实力得到了肯定,也给了我更多底气
搞机墨镜猫:正浩提前批官网好像就只有电力电子软硬件,哥们投的是这两个岗位吗
26届校招投递进展
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务