写点什么

数据库每日一题 --- 第 7 天:订单最多的客户

作者:知心宝贝
  • 2022 年 6 月 09 日
  • 本文字数:864 字

    阅读完需:约 3 分钟

数据库每日一题---第7天:订单最多的客户

一、问题描述

表: Orders


+-----------------+----------+| Column Name     | Type     |+-----------------+----------+| order_number    | int      || customer_number | int      |+-----------------+----------+Order_number是该表的主键。此表包含关于订单ID和客户ID的信息。
复制代码


编写一个 SQL 查询,为下了 最多订单 的客户查找 customer_number


测试用例生成后, 恰好有一个客户 比任何其他客户下了更多的订单。


查询结果格式如下所示:


题目链接:订单最多的客户

二、题目要求

样例

输入: Orders 表:+--------------+-----------------+| order_number | customer_number |+--------------+-----------------+| 1            | 1               || 2            | 2               || 3            | 3               || 4            | 3               |+--------------+-----------------+输出: +-----------------+| customer_number |+-----------------+| 3               |+-----------------+解释: customer_number 为 '3' 的顾客有两个订单,比顾客 '1' 或者 '2' 都要多,因为他们只有一个订单。所以结果是该顾客的 customer_number ,也就是 3 。
复制代码

考察

1.聚合函数2.建议用时10~25min
复制代码

三、问题分析

对于这一题,题目要求我们求出订单最多的客户,做题之前要注意题目只有一个订单最多的用户,而不是多个客户数据。


我们先使用聚合函数的结果如下:



根据customer_number进行聚合,对出现的订单数量进行计数处理,出现最多的应该是customer_number为第 3 个,我们只需要将这一行数据排序成第一行,这样选择的话就比较好操作。


排序后的结果如下:



MySQL 中, LIMIT 语句可以被用来限制 SELECT 语句的返回行数。所以我们使用limit 1只要返回第一行的结果,这就是题目要求我们求出的订单最多的客户号。

四、编码实现

select customer_numberfrom Ordersgroup by customer_number  --  根据customer_number进行聚合分类order by count(customer_number) desc  --对聚合之后进行排序结果limit 1 --返回第1行的结果
复制代码

五、测试结果




发布于: 刚刚阅读数: 3
用户头像

知心宝贝

关注

公众号:穿越计算机的迷雾 2022.03.07 加入

生于尘埃 溺于人海 死于理想高台

评论

发布
暂无评论
数据库每日一题---第7天:订单最多的客户_数据库_知心宝贝_InfoQ写作社区