【SQL】力扣1445. 苹果和桔子

1445. 苹果和桔子

【SQL】力扣1445. 苹果和桔子

在本篇博客中,我们将深入探讨力扣(LeetCode)数据库题目1445 —— "苹果和桔子"的详细解题步骤。我们会分析题目需求,然后详细解释SQL查询的构建过程,并对其时间复杂度进行分析。

题目描述

在数据库表Sales中记录了每日苹果和桔子的销售数据。我们的任务是编写SQL查询,以报告每天苹果和桔子销售数量的差异。查询结果需要按照sale_date字段的升序排列。

输入输出示例

输入是一个名为Sales的表,结构如下:

sale_datefruitsold_num
2020-05-01apples10
2020-05-01oranges8
2020-05-02apples15
2020-05-02oranges15
2020-05-03apples20
2020-05-03oranges0
2020-05-04apples15
2020-05-04oranges16

输出是一个包含sale_datediff(苹果与桔子销售数量差异)的表,关于给定示例的输出应如下:

sale_datediff
2020-05-012
2020-05-020
2020-05-0320
2020-05-04-1

解释:

  • 在 2020-05-01,卖了10个苹果和8个桔子(差异为 10 - 8 = 2)。
  • 在 2020-05-02,卖了15个苹果和15个桔子(差异为 15 - 15 = 0)。
  • 在 2020-05-03,卖了20个苹果和0个桔子(差异为 20 - 0 = 20)。
  • 在 2020-05-04,卖了15个苹果和16个桔子(差异为 15 - 16 = -1)。

解题思路

此题的关键在于理解如何区分苹果和桔子的销售数目,并计算它们的差值。为了实现这点,我们利用SUM函数结合IF语句,将苹果的销售数作为正值,桔子的销售数作为负值,然后对每天的销售记录求和,得到最终的差值。下面,我们将逐步解析这个过程。

SQL查询构建
  1. 利用SELECT语句,我们首先选择了sale_date作为需要返回的第一个字段。
  2. 应用SUMIF函数,若fruit列的值为’apples’,则sold_num作为正数;否则,苹果之外的水果(此例中为桔子)计为负数,之后对这些值求和,得到diff
  3. 使用GROUP BY语句来按sale_date对结果进行分组,这样就可以为每天计算苹果和桔子销售数目的差异。
  4. 最后,利用ORDER BY语句确保结果按照日期的升序排列。

下面是整个SQL查询的代码:

SELECTsale_date,SUM(IF(fruit='apples', sold_num, -sold_num)) AS diff
FROMSales
GROUP BYsale_date
ORDER BYsale_date ASC
复杂度分析

时间复杂度为 O ( n log ⁡ n ) O(n \log n) O(nlogn),其中 n n nSales表中的记录数。这是因为GROUP BY通常需要对数据进行排序,而排序的时间复杂度至少为 O ( n log ⁡ n ) O(n \log n) O(nlogn)

总结

通过合理利用SQL的聚合函数和条件表达式,我们可以轻松构建出一个既简洁又高效的查询来解决问题。

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

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

相关文章

C++ .h文件类的调用

demo1只有类的情况下调用 下面写一个util.h 文件里面 // 定义宏防止编译器重复编译 #ifndef TEST_H #define TEST_H class Test{ public:void sum(int a, int b);int num(int a, int b);bool number();}; #endif // TEST_H 调用的时候首先要引入这个头文件 #include "u…

华为机试真题实战应用【赛题代码篇】-等差数列(附Java、C++和python代码)

目录 题目描述 知识储备 等差数列 思路解析 代码实现 C++ 代码2

openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU

文章目录 openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU216.1 CPU216.2 查看CPU状况216.3 性能参数分析 openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU 获取openGauss节点的CPU、内存、I/O和网络资源使用情况…

[144] 二叉树的前序遍历 js

题目描述:给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 输入:root [1,null,2,3] * 输出:[1,2,3] 解题思路: 1 递归 2 迭代 前序 根左右 按照 根右左的顺序入栈,因为先进后出 每个节点出栈的…

Leetcode 213 打家劫舍 II

题意理解: 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果…

2024年华为OD机试真题-灰度图恢复-Java-OD统一考试(C卷)

题目描述: 黑白图像常采用灰度图的方式存储,即图像的每个像素填充一个灰阶值,256阶灰度图是一个灰阶值取值范围为0-255的灰阶矩阵,0表示全黑、255表示全白,范围内的其他值表示不同的灰度。但在计算机中实际存储时,会使用压缩算法,其中一种压缩格式和描述如下: 10 10 25…

项目02《游戏-11-开发》Unity3D

基于 项目02《游戏-10-开发》Unity3D , 任务:飞行坐骑 首先创建脚本, 绑定脚本, using UnityEngine; public class Dragon : MonoBehaviour{ [SerializeField] private float speed 10f; public Transfo…

TCP/IP协议以及UDP(超详细,看这一篇就够了)

💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录专栏:TCP/IP协议以及UDP(超详细,看这一篇就够了) 🎉欢迎大家点赞👍评论📝收藏⭐文章 TCP/IP协议以及UDP(超详细,看这一篇就够了 前提概括接收端和发送端客户…

【Linux】Linux开发工具(yum、gdb、git)详解

一、软件包管理器 yum 1、什么是软件包 在 Linux 下安装软件,通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。但这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成…

C语言error handle全面深入剖析:从原理到实践的全方位指南

在软件开发中,错误处理是确保程序稳定性和健壮性的重要手段。C语言作为一门广泛应用于系统级编程、嵌入式开发等领域的基础编程语言,其对错误处理的支持与实现机制尤为重要。本文将深度剖析C语言中的error handling策略,并结合实例进行详细讲…

基于华为云欧拉操作系统(HCE OS)构建HCE OS基础镜像

写在前面 博文内容为 华为云欧拉操作系统入门级开发者认证(HCCDA – Huawei Cloud EulerOS)实验笔记整理认证地址:https://edu.huaweicloud.com/certificationindex/developer/9bf91efb086a448ab4331a2f53a4d3a1当然也适用于其他的 Linux 系统构建基础镜像理解不足小…

MySQL 主键策略导致的效率性能

MySQL官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment 一、准备三张表 分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长的主键…

【开源】JAVA+Vue.js实现在线课程教学系统

目录 一、摘要1.1 系统介绍1.2 项目录屏 二、研究内容2.1 课程类型管理模块2.2 课程管理模块2.3 课时管理模块2.4 课程交互模块2.5 系统基础模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示4.1 管理后台4.2 用户网页 五、样例代码5.1 新增课程类型5.2 网站登录5.3 课…

C#,雷卡曼数(Recamán Number)的算法与源代码

1 雷卡曼数(Recamn Number) 雷卡曼数(Recamn Number),即Recaman序列被定义如下: (1) a[0]0; (2) 如果a[m-1]-m>0并且这个值在序列中不存在,则a[m]a[m-1]-m; (3) 否则a[m]a[m-1]m; 雷卡曼序…

OCP使用web console创建和构建应用

文章目录 环境登录创建project赋予查看权限部署第一个image检查pod扩展应用 部署一个Python应用连接数据库创建secret加载数据并显示国家公园地图 清理参考 环境 RHEL 9.3Red Hat OpenShift Local 2.32 登录 在 crc start 启动crc时,可以看到: .....…

蓝桥杯备赛Day9——链表进阶

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5]示例 2: 输入:head = [1], n = 1 输出:[]示例 3: 输入:head = [1,2], n = 1 输出:[1]提示: 链表中结点的数目为 sz1 <= sz <= 300 &l…

Linux操作系统基础(二):Linux操作系统概述

文章目录 Linux操作系统概述 一、Linux起源 二、Linux 的含义 三、Linux发行版 Linux操作系统概述 一、Linux起源 Linux创始人——林纳斯 托瓦兹 Linux 诞生于1991年&#xff0c;作者上大学期间实现的 Linux的特点&#xff1a;开源、免费、拥有最为庞大的源码贡献者 …

【数据结构】前缀树的模拟实现

目录 1、什么是前缀树&#xff1f; 2、模拟实现 2.1、前缀树节点结构 2.2、字符串的添加 2.3、字符串的查寻 2.3.1、查询树中有多少个以字符串"pre"作为前缀的字符串 2.3.2、查询某个字符串被添加过多少次 2.4、字符串的删除 3、完整代码 1、什么是前缀树&…

Mamba 环境安装踩坑问题汇总及解决方法

项目场景&#xff1a; 最近Mamba有关的论文引起了众多人的关注&#xff0c;虽然Mamba论文自身被ICLR 2024拒稿&#xff0c;但是其衍生的模型层出不穷&#xff0c;诸如 Vim 和 Umamba 等。笔者在配置相关环境&#xff08;版本安装要求&#xff1a;PyTorch 1.12&#xff1b;CUDA…

C++函数对象-运算符函数对象 - 比较 - 实现 x <= y 的函数对象 (std::less_equal)

任何定义了函数调用操作符的对象都是函数对象。C 支持创建、操作新的函数对象&#xff0c;同时也提供了许多内置的函数对象。 运算符函数对象 C 针对常用的算术和逻辑运算定义了很多函数对象&#xff1a; 比较 实现 x < y 的函数对象 std::less_equal template< class…