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

2024-01-25 力扣高频SQL50题目1174. 即时食物配送

题目如下:

配送表: Delivery

+-----------------------------+---------+
| Column Name                 | Type    |
+-----------------------------+---------+
| delivery_id                 | int     |
| customer_id                 | int     |
| order_date                  | date    |
| customer_pref_delivery_date | date    |
+-----------------------------+---------+
delivery_id 是该表中具有唯一值的列。
该表保存着顾客的食物配送信息,顾客在某个日期下了订单,并指定了一个期望的配送日期(和下单日期相同或者在那之后)。

如果顾客期望的配送日期和下单日期相同,则该订单称为 「即时订单」,否则称为「计划订单」。

首次订单」是顾客最早创建的订单。我们保证一个顾客只会有一个「首次订单」。

编写解决方案以获取即时订单在所有用户的首次订单中的比例。保留两位小数。

------

这个题目还是很有意思的。

一开始,我以为即时订单总量/所有用户首次订单数总量。

-- 不对

-- select round((sum(if(order_date=customer_pref_delivery_date,1,0))/count(distinct customer_id )),4)*100 as immediate_percentage  from Delivery

-- 不对

-- select round((sum(if(order_date=customer_pref_delivery_date,1,0))/(select distinct count( customer_id )from Delivery ))*100,2) as immediate_percentage  from Delivery

-- 不对

-- select round((sum(if(order_date=customer_pref_delivery_date,1,0))/(select  COUNT(DISTINCT customer_id) from Delivery ))*100,2) as immediate_percentage  from Delivery

-- 我看了下其他人答案,发现自己理解错了。

"即时订单在所有用户的首次订单中的比例"。

应该是 所有用户的首次订单中的即时订单总数 / 所有用户的首次订单量

所以,需要框定范围,首次订单

-- 不对

-- select round((sum(if(order_date=customer_pref_delivery_date,1,0))/(select  COUNT(DISTINCT customer_id) from Delivery  ))*100,2) as immediate_percentage  from Delivery group by customer_id


正确的写法:

-- 没用rownumber的解法

-- select round((sum(if(order_date=customer_pref_delivery_date,1,0))/(select  COUNT(DISTINCT customer_id) from Delivery  ))*100,2) as immediate_percentage  from Delivery where (customer_id, order_date) in (

select customer_id, min(order_date)

from delivery

group by customer_id )

-- 用rownumber的解法

-- SELECT round((sum(if(order_date=customer_pref_delivery_date,1,0))/(SELECT COUNT(DISTINCT customer_id) FROM Delivery))*100, 2) AS immediate_percentage

-- FROM

 (SELECT *, ROW_NUMBER() OVER(PARTITION BY customer_id ORDER BY order_date) AS rn   FROM Delivery) AS subquery WHERE rn = 1;

--用rownumber的解法 + count(*)

SELECT round((sum(if(order_date=customer_pref_delivery_date,1,0))/count(*))*100, 2) AS immediate_percentage

FROM

  (SELECT *,

  ROW_NUMBER() OVER(PARTITION BY customer_id ORDER BY order_date) AS rn

  FROM Delivery) AS subquery

WHERE rn = 1;

最后这个是比较好。直接将【首次订单】作为from来源的数据,count(*)因为where已经把条件框定了。

如何框定的?用row_number,把最早时间的那条记录弄出来。

相关文章:

2024-01-25 力扣高频SQL50题目1174. 即时食物配送

题目如下: 配送表: Delivery -------------------------------------- | Column Name | Type | -------------------------------------- | delivery_id | int | | customer_id | int | | order_date…...

java web 校园健康管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web校园健康管理系统是一套完善的java web信息管理系统 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysq…...

回归预测 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于SSA-SVR麻雀算法优化支持向量机的数据…...

Java转成m3u8,hls格式

Java转成m3u8,hls格式 需求分析 大致思路 循环文件夹下面所有文件判断当前文件是否是视频文件,如果是视频文件先转为ts文件 因为听别人说先转成ts之后再切片会快很多 转成ts文件,并为这些文件单独生成一个目录,如果目录不存在则新建一个目…...

jmeter之接口测试实现参数化(利用函数助手),参数值为1-9(自增的数字)

1.前言 思考:为什么不用postman,用postman的话就得导入csv文件/json文件 如果不想导入文件,postman是实现不了,因为postman每次只会运行一次 2.jmeter函数助手实现参数化 (1)新建“线程组”--新建“http…...

如何在 Ubuntu 22.04 上安装 Apache Web 服务器

前些天发现了一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站。 如何在 Ubuntu 22.04 上安装 Apache Web 服务器 介绍 Apache HTTP 服务器是世界上使用最广泛的 Web 服务器。它…...

【python爬虫】爬虫编程技术的解密与实战

​🌈个人主页:Sarapines Programmer🔥 系列专栏: 爬虫】网络爬虫探秘⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 🌼实验目的 &#x1f…...

VisualSVN Server下载安装和使用方法、服务器搭建、使用TortoiseSvn将项目上传到云端服务器、各种错误解决方法

VisualSVN Server下载安装和使用方法、服务器搭建、使用TortoiseSvn将项目上传到云端服务器、各种错误解决方法 0.写在前面00.电脑配置01.思路 1.VisualSVN Server下载安装01.下载02.安装03.电脑命名不能有中文04.制作VisualSVN Server快捷方式05.License limits exceeded, Som…...

Python模块与包:扩展功能、提高效率的利器

文章目录 一、引言1.1 模块与包对于Python开发的重要性1.2 Python作为拥有丰富生态系统的编程语言 二、为什么学习模块与包2.1 复用代码:利用现有模块与包加速开发过程2.2 扩展功能:通过模块与包提供的功能增强应用的能力 三、模块的使用3.1 导入模块&am…...

【每日一题】4.LeetCode——杨辉三角

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点&…...

蓝桥杯(Python)每日练Day5

题目 OJ1229 题目分析 题目完全符合栈的特征,后进先出。如果能够熟练使用列表的9种方法那么这道题很容易解出。 题解 a[]#存衣服 nint(input()) for i in range(n):llist(input().split())#判断每一步的操作if len(l[0])2:a.append(l[1])else:while a.pop()!l…...

SpringCloud(二)

Spring Cloud 文章目录 Spring Cloud任务三:Spring Cloud与微服务架构1.Spring Cloud课程内容介绍2.单体应用架构2.1 互联网应用架构演进2.2 单体应用架构 3.垂直应用架构4.SOA应用架构5.微服务应用架构介绍6.微服务架构核心思想及优缺点7.微服务架构的核心概念8.Sp…...

【java】常见的面试问题

目录 一、异常 1、 throw 和 throws 的区别? 2、 final、finally、finalize 有什么区别? 3、try-catch-finally 中哪个部分可以省略? 4、try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗&#…...

虚幻UE 插件-像素流送实现和优化

本笔记记录了像素流送插件的实现和优化过程。 UE version:5.3 文章目录 一、像素流送二、实现步骤1、开启像素流送插件2、设置参数3、打包程序4、打包后的程序进行像素流参数设置5、下载NodeJS6、下载信令服务器7、对信令服务器进行设置8、启动像素流送 三、优化1、…...

Vue2 props组件通信

一、父组件向子组件传值 1、流程图 2、父组件代码 <template><div class"app"><UserInfo:usernameusername:ageage:isSingleisSingle:carcar:hobbyhobby></UserInfo></div> </template><script> import UserInfo from .…...

重构改善既有代码的设计-学习(三):重新组织数据

1、拆分变量&#xff08;Split Variable&#xff09; 有些变量用于保存一段冗长代码的运算结果&#xff0c;以便稍后使用。这种变量应该只被赋值一次。 如果它们被赋值超过一次&#xff0c;就意味它们在函数中承担了一个以上的责任。如果变量承担多个责任&#xff0c;它就应该被…...

群狼调研(长沙品牌忠诚度测试)|广告效果测评方法

广告效果测评方法可以根据具体的目标和需求而有所差异&#xff0c;以下是一些常见的广告效果测评方法&#xff1a; 1.品牌调研和调查&#xff1a;通过定量或定性的调研和调查方法&#xff0c;评估广告对品牌认知、品牌形象和品牌偏好的影响&#xff0c;包括品牌知名度、品牌关联…...

Gradle学习笔记:Gradle的使用方法

文章目录 1.初始化项目2.构建脚本语言选择3.项目命名4.项目构建过程 1.初始化项目 创建一个test空文件夹&#xff0c;在该文件夹下打开终端&#xff0c;并执行命令&#xff1a;gradle init. 会有一个选项让你选择项目的类型。下面是每个选项的含义和用途&#xff1a; basic&am…...

少儿编程 2023年12月电子学会图形化编程等级考试Scratch二级真题解析(选择题)

2023年12月scratch编程等级考试二级真题 选择题(共25题,每题2分,共50分) 1、在制作推箱子游戏时,地图是用数字形式储存在电脑里的,下图是一个推箱子地图,地图表示如下:第一行( 111111)第二行( 132231) 第三行( 126621) 第四行( ) 第五行( 152321) 第六行( 111111 ) 根…...

基于Java+SpringMvc+vue+element实现上海汽车博物馆平台

基于JavaSpringMvcvueelement实现上海汽车博物馆平台 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 …...

英特尔转型芯片代工:从IDM巨头到服务商的六大挑战与机遇

1. 英特尔代工之路&#xff1a;从IDM巨头到服务提供商的六大挑战在半导体行业&#xff0c;英特尔这个名字几乎就是高性能微处理器的代名词。这家公司凭借其垂直整合制造模式&#xff0c;在过去几十年里构筑了难以撼动的技术护城河。然而&#xff0c;当行业的目光从单纯的制程竞…...

在旧版iOS设备上部署ChatGPT客户端:逆向工程与兼容性实战

1. 项目概述&#xff1a;为旧版iOS设备注入AI灵魂 如果你手头还保留着一台运行iOS 6或7的iPhone 4s、iPad 2&#xff0c;或者任何被时代“遗忘”的旧设备&#xff0c;看着它们除了怀念似乎别无他用&#xff0c;那么今天分享的这个项目&#xff0c;或许能让它们重获新生。我最近…...

中小项目如何通过按token计费模式灵活启动AI功能

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 中小项目如何通过按token计费模式灵活启动AI功能 对于预算有限的中小项目团队而言&#xff0c;在探索产品方向、验证市场需求的早期…...

Antigravity AI 助手“装死”?一招解决 Git 配置引发的无响应崩溃

我们在使用 Antigravity AI IDE 进行开发时&#xff0c;有时会遇到一个令人头疼的现象&#xff1a;在对话框输入任何 Prompt 后&#xff0c;AI 助手仿佛“装死”一般毫无反应。没有生成提示&#xff0c;也没有错误弹窗&#xff0c;即使重启 IDE 或清理对话历史也无济于事。这不…...

S905M芯片盒子救砖实战:8189ETV无线与NAND存储的线刷固件修复指南

1. 救砖前的准备工作 当你发现手里的辽宁移动数码视讯Q5盒子突然变砖&#xff0c;先别急着扔。这种采用S905M芯片的盒子其实有很高的可玩性&#xff0c;尤其是搭配8189ETV无线模块和NAND存储的方案&#xff0c;只要掌握正确方法&#xff0c;救砖成功率很高。我前前后后折腾过二…...

Claude Code与Cursor CLI集成:AI辅助编程工作流优化实践

1. 项目概述&#xff1a;Claude Code与Cursor CLI的桥梁如果你和我一样&#xff0c;日常开发中同时使用Claude Code和Cursor&#xff0c;并且对Composer 2的执行速度印象深刻&#xff0c;那么你很可能也面临过这样的困境&#xff1a;Claude Code在规划、分析和代码审查方面表现…...

自动化测试系统开关架构与继电器选型指南

1. 自动化测试系统中的开关架构选择在自动化测试系统中&#xff0c;开关架构的选择直接影响着测试效率、信号完整性和系统成本。根据测试需求和被测设备(DUT)特性&#xff0c;我们可以将开关架构分为四种基本类型。1.1 无开关架构无开关架构是最直接的连接方式&#xff0c;每个…...

工控人必备技能:VMware虚拟机+Win10+博途V15完整开发环境搭建实录(从镜像下载到PLC在线)

工控工程师的移动工作站&#xff1a;VMwareWin10博途V15全栈开发环境实战指南 在工业自动化领域&#xff0c;能够随时随地进行PLC程序开发和调试的能力已经成为工程师的核心竞争力。想象这样一个场景&#xff1a;深夜接到产线紧急故障通知&#xff0c;而你的开发环境却锁在办公…...

深入u-boot目录结构:以全志V3s的LicheePi Zero为例,理解每个文件夹的作用

深入解析u-boot目录结构&#xff1a;全志V3s平台下的LicheePi Zero实践指南 当你第一次打开u-boot源码仓库时&#xff0c;面对密密麻麻的目录结构可能会感到无从下手。作为嵌入式系统开发中至关重要的启动加载程序&#xff0c;u-boot的架构设计既体现了通用性又兼顾了平台特异…...

放心API和4SAPI怎么选?从开发者选型角度看差异

很多开发者在选 Claude API 中转站时&#xff0c;都会遇到一个问题&#xff1a;**到底是选更偏个人友好的放心API&#xff0c;还是选更偏企业级的4SAPI&#xff1f;**这个问题没有标准答案&#xff0c;只有场景答案。---## 一、先给结论如果你的项目处于以下阶段&#xff1a;- …...