MySQL练手 --- 1174. 即时食物配送 II

news2024/11/16 1:21:14

题目链接:1174. 即时食物配送 II

思路:

题目要求:即时订单在所有用户的首次订单中的比例。保留两位小数
其实也就是 即时订单 / 首次订单
所以,先求出首次订单,在首次订单的基础上寻找即时订单即可

解题过程:

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

那么就对用户进行分组,求出下单日期最小的即可

SELECT customer_id, MIN(order_date)
FROM Delivery
GROUP BY customer_id

在这里插入图片描述
再此基础上,再过滤出即时订单即可

SELECT *
FROM Delivery
WHERE (customer_id, order_date) IN (
    SELECT customer_id, MIN(order_date)
    FROM Delivery
    GROUP BY customer_id
)

在这里插入图片描述
最后编写查询的字段即可

ROUND(SUM(order_date = customer_pref_delivery_date) * 100 / COUNT(*),2)

对 SUM(order_date = customer_pref_delivery_date) 的介绍讲解

SUM(order_date = customer_pref_delivery_date) 这个表达式是一个很有趣的用法,它的意思是统计 order_datecustomer_pref_delivery_date 两个字段相等的行数。

具体来说:

  1. order_date = customer_pref_delivery_date 是一个逻辑表达式,它会对每一行数据进行比较,如果 order_date 等于 customer_pref_delivery_date,则该表达式的值为 1,否则为 0

  2. 然后 SUM() 函数会将所有行的这个逻辑表达式的结果进行求和。也就是说,SUM(order_date = customer_pref_delivery_date) 会统计出 order_datecustomer_pref_delivery_date 相等的行数。

举个例子,假设有以下数据:

order_idorder_datecustomer_pref_delivery_date
12023-05-012023-05-01
22023-05-022023-05-03
32023-05-032023-05-03
42023-05-042023-05-04

那么执行 SUM(order_date = customer_pref_delivery_date) 将得到结果 3,因为有 3 行的 order_datecustomer_pref_delivery_date 是相等的。

这种用法在一些需要统计满足某个条件的行数的场景中很有用,例如统计准时交货的订单数量等。

Code

SELECT ROUND(SUM(order_date = customer_pref_delivery_date) * 100 / COUNT(*),2) immediate_percentage 
FROM Delivery
WHERE (customer_id, order_date) IN (
    SELECT customer_id, MIN(order_date)
    FROM Delivery 
    GROUP BY customer_id 
)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1950533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql explain 优化解析

explain 解释 select_type 效率对比 MySQL 中 EXPLAIN 语句的 select_type 列描述了查询的类型,不同的 select_type 类型在效率上会有所差异。下面我们来比较一下各种 select_type 的效率: SIMPLE: 这是最简单的查询类型,表示查询不包含子查询或 UNION 操作。 这种查询通常是…

SpringCloud注册中心

SpringCloud注册中心 文章目录 SpringCloud注册中心1、注册中心原理2、Nacos注册中心2.1、部署nacos 3、服务注册4、服务发现 1、注册中心原理 在大型微服务项目中,服务提供者的数量会非常多,为了管理这些服务就引入了注册中心的概念。注册中心、服务提…

Redis实战篇(黑马点评)笔记总结

一、配置前后端项目的初始环境 前端: 对前端项目在cmd中进行start nginx.exe,端口号为8080 后端: 配置mysql数据库的url 和 redis 的url 和 导入数据库数据 二、登录校验 基于Session的实现登录(不推荐) &#xf…

微信小程序之接口测试

接口测试使用的方法及技术 测试接口文档 测试用例 用例执行:

算法日记day 20(二叉搜索树)

一、验证二叉搜索树 题目: 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左 子树 只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也…

学习记录——day20 IO

IO基础 1、IO:(inout output) 程序与外部设备进行信息交换的过程 2、IO的分类:标准IO和文件IO 1)标准IO:调用封装好的相关库函数,来实现数据的输入输出 2)文件IO: 3、…

vue3响应式用法(高阶性能优化)

文章目录 前言:一、 shallowRef()二、 triggerRef()三、 customRef()四、 shallowReactive()五、 toRaw()六、 markRaw()七、 shallowReadonly()小结: 前言: 翻别人代码时,总结发现极大部分使用vue3的人只会用ref和reactive处理响…

废品回收小程序制作,数字化带来的商业机会

随着社会环保意识的增强,废品回收成为了一个热门行业,它不仅能够减少资源浪费,还能够带来新的商业机会! 当下,废品回收小程序已经成为了回收市场的重要方式,为回收行业的发展注入新鲜活力,推动…

如何使用C#快速创建定时任务

原文链接:https://www.cnblogs.com/zhaotianff/p/17511040.html 使用Windows的计划任务功能可以创建定时任务。 使用schtasks.exe可以对计划任务进行管理,而不需要编写额外代码 这里掌握schtasks /CREATE 的几个核心参数就可以快速创建计划任务 /SC …

【短视频批量剪辑系统源代码开发部署技术分享】

多视频一键剪辑,创意无限升级 在确保音视频同步的基础之上,可视化剪辑技术再次迎来重大升级。最新引入的“多脚本升多视频”功能,标志着可视化剪辑矩阵的全面进步,为内容创作带来了前所未有的便利和灵活性。 这一功能的引入使得一…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十五章 Pinctrl和GPIO子系统实验

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

超声波眼镜清洗机有必要买吗?不踩坑的超声波眼镜清洗机选购攻略

超声波眼镜清洗机有必要买吗?当然有必要啦!眼镜戴久,镜片难免会脏,镜片看起来会越来越模糊,不仅会影响清晰度还会影响美观,如果是经常戴妆出门的女生,镜托位置污垢也会越来越脏,有些…

windows下运行sh文件

1、打开git bash 2、进入sh文件所在文件夹,使用sh xx.sh运行

Python爬虫掌握-----4实战(爬取视频)

我们使用爬虫时难免会遇到爬取视频的情况,其实爬取图片视频,内容都是一样的。这里以b站视频为例。 一、开始 1.找到url,请求url 防盗链,需要写在UA伪装中 正常的三步: 1.url 2.requests请求 3.UA伪装 import req…

基于迁移学习的手势分类模型训练

1、基本原理介绍 这里介绍的单指模型迁移。一般我们训练模型时,往往会自定义一个模型类,这个类中定义了神经网络的结构,训练时将数据集输入,从0开始训练;而迁移学习中(单指模型迁移策略)&#x…

【性能优化】在大批量数据下使用 HTML+CSS实现走马灯,防止页面卡顿(二)

上一篇只是简单演示了’下一张’的操作和整体的设计思路,这两天把剩余功能补全了,代码经过精简,可封装当成轮播组件使用,详细如下. 代码 <template><div class"container"><button click"checkNext(last)">上一张</button><b…

C++之栈和队列使用及模拟实现

目录 栈的使用 队列的使用 栈的模拟实现 队列的模拟实现 deuqe容器介绍 在C语言中我们已经学习了栈和队列的相关性质&#xff0c;今天我们主要来学习C语法中栈和队列的相关概念。 栈的使用 在C中栈是一种容器适配器&#xff0c;在其内部适配了其它的容器&#xff0c;其相…

go程序在windows服务中优雅开启和关闭

本篇主要是讲述一个go程序&#xff0c;如何在windows服务中优雅开启和关闭&#xff0c;废话不多说&#xff0c;开搞&#xff01;&#xff01;&#xff01;   使用方式&#xff1a;go程序 net服务启动 Ⅰ 开篇不利 Windows go进程编译后&#xff0c;为一个.exe文件,直接执行即…

使用api 调试接口 ,配置 Header 、 body 远程调试 线上接口

学习目标&#xff1a; 目标 使用api 调试接口 &#xff0c;配置 Header 、 body 远程调试 线上接口 学习内容&#xff1a; 内容 设置请求方式 2. 选择 POST 提交 3.设置 Header 一般默认的 4个 header 属性就可以直接使用&#xff0c;如有特殊情况&#xff0c;需进行属性设…

Docusaurus VS VuePress:哪一个更适合你的技术文档?

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…