当前位置: 首页 > news >正文

网站关键字优化软件aso安卓优化公司

网站关键字优化软件,aso安卓优化公司,网牛网站建设,ip查询网站备案查询系统相信很多学习SQL的小伙伴都面临这样的困境,学习完书本上的SQL基础知识后,一方面想测试下自己的水平;另一方面想进一步提升,却不知道方法。 其实,对于技能型知识,我的观点一贯都是:多练习、多实…

相信很多学习SQL的小伙伴都面临这样的困境,学习完书本上的SQL基础知识后,一方面想测试下自己的水平;另一方面想进一步提升,却不知道方法。

其实,对于技能型知识,我的观点一贯都是:多练习、多实践。正所谓实践出真知,学完书本的知识,很多时候也只能做到知道,距离熟练的应用还差的很远。

在咱们程序员圈子里,力扣(LeetCode)和牛客(nowcoder.com)是两个公认比较好的实践平台。题库比较多,还有不少大厂的笔试真题,特别适合找工作时撸一撸。当然,作为平时个人技术提升的练习题,也是非常不错的。

最近一段时间,我会先从力扣(LeetCode)的SQL题刷起。当然,顺序可能是随机的,欢迎小伙伴们点题。

题目:1549. 每件商品的最新订单

(通过次数5,893 | 提交次数8,629,通过率68.29%)

表: Customers
+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| customer_id   | int     |
| name          | varchar |
+---------------+---------+
customer_id 是该表主键.
该表包含消费者的信息.表: Orders
+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| order_id      | int     |
| order_date    | date    |
| customer_id   | int     |
| product_id    | int     |
+---------------+---------+
order_id 是该表主键.
该表包含消费者customer_id产生的订单.
不会有商品被相同的用户在一天内下单超过一次.表: Products
+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| product_id    | int     |
| product_name  | varchar |
| price         | int     |
+---------------+---------+
product_id 是该表主键.
该表包含所有商品的信息.写一个SQL 语句, 找到每件商品的最新订单(可能有多个).
返回的结果以 product_name 升序排列, 如果有排序相同, 再以 product_id 升序排列. 如果还有排序相同, 再以 order_id 升序排列.
查询结果格式如下例所示。示例 1:输入:
Customers表:
+-------------+-----------+
| customer_id | name      |
+-------------+-----------+
| 1           | Winston   |
| 2           | Jonathan  |
| 3           | Annabelle |
| 4           | Marwan    |
| 5           | Khaled    |
+-------------+-----------+
Orders表:
+----------+------------+-------------+------------+
| order_id | order_date | customer_id | product_id |
+----------+------------+-------------+------------+
| 1        | 2020-07-31 | 1           | 1          |
| 2        | 2020-07-30 | 2           | 2          |
| 3        | 2020-08-29 | 3           | 3          |
| 4        | 2020-07-29 | 4           | 1          |
| 5        | 2020-06-10 | 1           | 2          |
| 6        | 2020-08-01 | 2           | 1          |
| 7        | 2020-08-01 | 3           | 1          |
| 8        | 2020-08-03 | 1           | 2          |
| 9        | 2020-08-07 | 2           | 3          |
| 10       | 2020-07-15 | 1           | 2          |
+----------+------------+-------------+------------+
Products表:
+------------+--------------+-------+
| product_id | product_name | price |
+------------+--------------+-------+
| 1          | keyboard     | 120   |
| 2          | mouse        | 80    |
| 3          | screen       | 600   |
| 4          | hard disk    | 450   |
+------------+--------------+-------+
输出:
+--------------+------------+----------+------------+
| product_name | product_id | order_id | order_date |
+--------------+------------+----------+------------+
| keyboard     | 1          | 6        | 2020-08-01 |
| keyboard     | 1          | 7        | 2020-08-01 |
| mouse        | 2          | 8        | 2020-08-03 |
| screen       | 3          | 3        | 2020-08-29 |
+--------------+------------+----------+------------+
解释:
keyboard 的最新订单在2020-08-01, 在这天有两次下单.
mouse 的最新订单在2020-08-03, 在这天只有一次下单.
screen 的最新订单在2020-08-29, 在这天只有一次下单.
hard disk 没有被下单, 我们不把它包含在结果表中.来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/the-most-recent-orders-for-each-product

#测试数据
Create table If Not Exists Customers (customer_id int, name varchar(10));
Create table If Not Exists Orders (order_id int, order_date date, customer_id int, product_id int);
Create table If Not Exists Products (product_id int, product_name varchar(20), price int);insert into Customers (customer_id, name) values ('1', 'Winston');
insert into Customers (customer_id, name) values ('2', 'Jonathan');
insert into Customers (customer_id, name) values ('3', 'Annabelle');
insert into Customers (customer_id, name) values ('4', 'Marwan');
insert into Customers (customer_id, name) values ('5', 'Khaled');insert into Orders (order_id, order_date, customer_id, product_id) values ('1', '2020-07-31', '1', '1');
insert into Orders (order_id, order_date, customer_id, product_id) values ('2', '2020-7-30', '2', '2');
insert into Orders (order_id, order_date, customer_id, product_id) values ('3', '2020-08-29', '3', '3');
insert into Orders (order_id, order_date, customer_id, product_id) values ('4', '2020-07-29', '4', '1');
insert into Orders (order_id, order_date, customer_id, product_id) values ('5', '2020-06-10', '1', '2');
insert into Orders (order_id, order_date, customer_id, product_id) values ('6', '2020-08-01', '2', '1');
insert into Orders (order_id, order_date, customer_id, product_id) values ('7', '2020-08-01', '3', '1');
insert into Orders (order_id, order_date, customer_id, product_id) values ('8', '2020-08-03', '1', '2');
insert into Orders (order_id, order_date, customer_id, product_id) values ('9', '2020-08-07', '2', '3');
insert into Orders (order_id, order_date, customer_id, product_id) values ('10', '2020-07-15', '1', '2');insert into Products (product_id, product_name, price) values ('1', 'keyboard', '120');
insert into Products (product_id, product_name, price) values ('2', 'mouse', '80');
insert into Products (product_id, product_name, price) values ('3', 'screen', '600');
insert into Products (product_id, product_name, price) values ('4', 'hard disk', '450');

解题思路:

跟8月23日的推文《1077. 项目员工 III》一样,这道题考查的也是分组内排名,然后返回前N名的写法。

但是也有2点特殊要求:

第一,如果最新的一天有多条记录,那么都需要返回;

第二,对于返回的结果,需要按要求排序:返回的结果以 product_name 升序排列, 如果有排序相同, 再以 product_id 升序排列. 如果还有排序相同, 再以 order_id 升序排列

那么,在实现上,也主要是分为以下3个步骤:

第一步,先计算出每个产品每个订单日期的排名(倒序),如果最新的日期内有多笔订单,则需要全部返回。

针对这类分组内排序后取前N名的需求,有三个分析函数可以使用,分别是:row_number、rank、dense_rank。

根据需求,这里比较适合使用的是rank和dense_rank,然后限定排序序号为1即可。

第二步,关联出返回结果中需要的product_name。可以使用product_id与Products关联,获取product_name的值。

第三步,使用order by子句,对返回的结果集进行排序。

参考SQL:


selectc.product_name,b.product_id,b.order_id,b.order_date
from (selecta.product_id,a.order_id,a.order_date,rank() over(partition by a.product_id order by order_date desc) rkfrom Orders a
)b
left join Products c
on b.product_id = c.product_id
where b.rk = 1
order by c.product_name,b.product_id,b.order_id;

http://www.tj-hxxt.cn/news/103798.html

相关文章:

  • 大型网站制作设计网络营销课程实训报告
  • 抛丸机网站排名优化企业网站有哪些类型
  • 网站开发岗位分析阿里云域名注册入口
  • 网站管理助手 伪静态百度查询入口
  • 广告联盟没有网站怎么做怎样宣传自己的品牌
  • 两个域名同一个网站做优化关键词优化排名公司
  • 托管网站网络营销策划方案书
  • 有经验的合肥网站建设班级优化大师app下载
  • 做图客网站app拉新推广项目
  • 房地产的设计网站建设郑州seo推广优化
  • 高端网站建设行业seo的最终是为了达到
  • 在线直播教学网站是怎么做的搜索引擎营销的原理是什么
  • 网站建设及推广外包东莞网站优化关键词排名
  • 阿里巴巴做网站小红书seo排名规则
  • 站内推广的主要目的是电商网站
  • 自动做任务赚钱的网站站长之家seo信息
  • 木材模板.网站怎么在百度打广告
  • 专业网站设计制作费用刷推广链接人数的软件
  • 网站建设销售信长沙百度快速排名优化
  • 怎么样创建一个网站广告公司职位
  • 中小企业网站建设济南兴田德润厉害吗百度收录提交网址
  • wordpress获取评论用户什么是网站seo
  • 做网站服务器在哪买国内新闻最新消息今天
  • 做网站的颜色搭配种子搜索神器
  • tp5网站文档归档怎么做友情链接软件
  • 凡科轻站网站是怎么建立起来的
  • 高大上的自助建站网站成都百度推广优化创意
  • 做网站需要学js吗2020最近的新闻大事10条
  • 做视频点播网站seo怎么做推广
  • 建网站找哪家好seo网站系统