前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一道sql面试题

一道sql面试题

作者头像
蛋蛋编程手记
发布2022-12-12 21:09:17
2420
发布2022-12-12 21:09:17
举报
文章被收录于专栏:蛋蛋编程手记蛋蛋编程手记

最近有朋友去面试问了我一道sql面试题。看似简单,实则还是有坑在里面的。

题目是要求用一条sql语句检索出订单表中购买每类产品付款数都大于60元的客户姓名。

订单表有三个字段,分别是客户姓名,产品类型,付款数。

这道题的现实意义我猜可能是想求出优质用户,然后围绕优质用户做一些推广或者给出一些优惠促成他们继续成交。

那这道题到底怎么解呢?图片下方是我朋友给出的答案。

聪明的读者,先别着急往下看,你可以停下来自己想一下写一下。

这道题的解题思路是这样的。

首先你需要求出每个用户每个产品付款金额的总和,因为每个用户可能在一个产品上下单了多次。这里可以对用户、产品分组,对付款金额聚合求和

在第一步的基础上,求出每个用户在每类产品上的最低花费,这里可以对用户分组,对付款金额聚合求最小值

然后按照60元的阈值进行过滤就能得到目标客户名称啦

最后的答案是这样子的:

select Name from

( select Name,sum(Payment) Payment from product group by Name,Product ) a

group by Name

having min(Payment)>60

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 蛋蛋编程手记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档