SQL每日一练(3)

news2025/5/25 20:32:01

前言:

难得看到了套好题,没考我,呜呜,今日第三更!

原始表(ai生成)

1. 销售表(sales)

用途:记录每笔销售的产品 ID 及金额。

product_id(产品 ID)sales_amount(销售金额)
1120
1180
2200
3150
3100
4100
550

2. 产品表(products)

用途:记录产品 ID 与产品名称的映射关系。

product_id(产品 ID)product_name(产品名称)
1产品 A
2产品 B
3产品 C
4产品 D
5产品 E

1、查询所有时间内,销售金额占比大于等于 10% 的产品,并按占比大小降序排序,
结果输出:产品名称 销售金额 占比

2、 所有时间内,销售金额占比大于等于 10% 的产品有多少个?占比排第三大的百分比为(四舍五入 2 位小数)?
填写示例:2 11.24%

题目1:思路:窗口函数:利用sum()over()

SELECT
    p.product_name AS "产品名称",
    SUM(s.sales_amount) AS "销售金额",
    ROUND(SUM(s.sales_amount) * 100.0 / SUM(SUM(s.sales_amount)) OVER(), 2) AS "占比"
FROM
    sales s
JOIN
    products p ON s.product_id = p.product_id
GROUP BY
    p.product_name
HAVING
    "占比" >= 10  -- 直接引用SELECT中的别名,简化计算
ORDER BY
    "占比" DESC;

第二种做法:更直观:利用分布查询:

1、计算每个商品的销售金额:

WITH t1 AS (
    SELECT
        p.product_name,
        SUM(s.sales_amount) AS sales_amount
    FROM
        sales s
    JOIN
        products p ON s.product_id = p.product_id
    GROUP BY
        p.product_name
)

2、计算前10%

SELECT
    product_name AS "产品名称",
    sales_amount AS "销售金额",
    ROUND(sales_amount * 100.0 / (SELECT SUM(sales_amount) FROM t1), 2) AS "占比"
FROM
    t1
WHERE
    ROUND(sales_amount * 100.0 / (SELECT SUM(sales_amount) FROM t1), 2) >= 10
ORDER BY
    "占比" DESC;

 第二问:在第一问基础上利用count查询个数,where中加查询条件,要注意排名第三大表达方式limit1 offset2或者dense_rank的窗口去查询

1、还是一样的创建t1表,第一次将商品总值计算

WITH t1 AS (
    SELECT
        p.product_name,
        SUM(s.sales_amount) AS sales_amount
    FROM
        sales s
    JOIN products p ON s.product_id = p.product_id
    GROUP BY p.product_name
),

 2、创建t2表,计算其中10%的商品,利用dense_rank进行排序,where筛选条件

t2 AS (
    SELECT
        product_name,
        sales_amount,
        ROUND(sales_amount * 100.0 / (SELECT SUM(sales_amount) FROM t1), 2) AS ratio,
        DENSE_RANK() OVER(ORDER BY ratio DESC) AS dense_rank  -- 密集排名处理并列
    FROM t1
    WHERE ROUND(sales_amount * 100.0 / (SELECT SUM(sales_amount) FROM t1), 2) >= 10
)

3 select 即可 count(*)从第二问中查询大于10%的个数,max()找dense_rank=3的产品

SELECT
    COUNT(*) AS product_count,
    MAX(CASE WHEN dense_rank = 3 THEN ratio END) AS third_ratio
FROM t2;

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

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

相关文章

水利数据采集MCU水资源的智能守护者

水利数据采集仪MCU,堪称水资源的智能守护者,其重要性不言而喻。在水利工程建设和水资源管理领域,MCU数据采集仪扮演着不可或缺的角色。它通过高精度的传感器和先进的微控制器技术,实时监测和采集水流量、水位、水质等关键数据&…

origin绘图之【如何将横坐标/x设置为文字、字母形式】

在使用 Origin 进行科研绘图或数据可视化的过程中,我们常常会遇到这样一种需求:希望将横坐标(X轴)由默认的数字形式,改为字母(如 A、B、C……)或中文文字(如 一、二、三……&#xf…

工业智能网关建立烤漆设备故障预警及远程诊断系统

一、项目背景 烤漆房是汽车、机械、家具等工业领域广泛应用的设备,主要用于产品的表面涂装。传统的烤漆房控制柜采用本地控制方式,操作人员需在现场进行参数设置和设备控制,且存在设备智能化程度低、数据孤岛、设备维护成本高以及依靠传统人…

Kafka Streams 和 Apache Flink 的无状态流处理与有状态流处理

Kafka Streams 和 Apache Flink 与数据库和数据湖相比的无状态和有状态流处理的概念和优势。 在数据驱动的应用中,流处理的兴起改变了我们处理和操作数据的方式。虽然传统数据库、数据湖和数据仓库对于许多基于批处理的用例来说非常有效,但在要求低延迟…

LM-BFF——语言模型微调新范式

gpt3(GPT3——少样本示例推动下的通用语言模型雏形)结合提示词和少样本示例后,展示出了强大性能。但大语言模型的训练门槛太高,普通研究人员无力,LM-BFF(Making Pre-trained Language Models Better Few-shot Learners)的作者受gp…

NVMe高速传输之摆脱XDMA设计2

NVMe IP放弃XDMA原因 选用XDMA做NVMe IP的关键传输模块,可以加速IP的设计,但是XDMA对于开发者来说,还是不方便,原因是它就象一个黑匣子,调试也非一番周折,尤其是后面PCIe4.0升级。 因此决定直接采用PCIe设…

pycharm无需科学上网工具下载插件的解决方案

以下是两种无需科学上网即可下载 PyCharm 插件的解决思路: 方法 1:设置 PyCharm 代理 打开 PyCharm选择菜单:File → Settings → Appearance & Behavior → System Settings → HTTP Proxy在代理设置中进行如下配置: 代理地…

Halcon计算点到平面的距离没有那么简单

Halcon计算点到平面距离 1. 一些基本概念2. 浅谈有无符号的距离2.1 无符号距离的用武之地2.2 有符号距离的必要性 3. 无符号距离怎么算3.1 创建一个无限延展的基准平面,对距离有什么影响?Halcon代码图示 3.2 创建一个小小小的基准平面,对距离…

数据中台如何设计?中台开发技术方案,数据治理方案,大数据建设方案合集

中台的价值与核心理念 中台的核心在于“企业级能力复用”,其价值体现在四大维度: 能力整合:将分散的数字化能力(如营销、供应链)集中管理,形成核心竞争力; 业务创新:通过跨领域融合…

Adminer 连接mssql sqlserver

第一步 docker-compose.yml adminer部分: version: 3.8 services: adminer: image: adminer:latest container_name: adminer restart: unless-stopped volumes: - ./freetds/freetds.conf:/etc/freetds.conf:rw # 确保 :rw 可读写 co…

C++系统IO

C系统IO 头文件的使用 1.使用系统IO必须包含相应的头文件,通常使用#include预处理指令。 2.头文件中包含了若干变量的声明,用于实现系统IO。 3.头文件的引用方式有双引号和尖括号两种,区别在于查找路径的不同。 4.C标准库提供的头文件通常没…

DELL EMC PowerStore BBU更换手册

写在前面 上周给客户卖了一个BBU电池,客户要写一个更换方案。顺利完成了更换,下面就把这个更换方案给大家share出来,以后客户要写,您就Ctrlc 和Ctrlv就可以了。 下面的步骤是最理想的方式,中间没有任何的问题&#xff…

css五边形

五边形 .fu{width: 172rpx;height: 204rpx;overflow: hidden;border-radius: 10rpx;clip-path: polygon(0% 0%, 100% 0%, 100% 75%, 50% 100%, 0% 75%, 0% 25%); }六边形 clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);

三种常见脉冲神经网络编码方式解读

速率编码(rate coding) 速率编码使用输入特征来确定尖峰频率,例如将静态输入数据(如 MNIST 图像)转换为时间上的脉冲(spike)序列。它是将神经元发放脉冲的频率与输入值(如像素强度)…

STM32F103 HAL多实例通用USART驱动 - 高效DMA+RingBuffer方案,量产级工程模板

导言 《STM32F103_LL库寄存器学习笔记12.2 - 串口DMA高效收发实战2:进一步提高串口接收的效率》前阵子完成的LL库与寄存器版本的代码,有一个明显的缺点是不支持多实例化。最近,计划基于HAL库系统地梳理一遍bootloader程序开发。在bootloader程…

HTML回顾

html全称:HyperText Markup Language(超文本标记语言) 注重标签语义,而不是默认效果 规则 块级元素包括: marquee、div等 行内元素包括: span、input等 规则1:块级元素中能写:行内元素、块级元素&…

机器视觉6-halcon高级教程

机器视觉6-halcon高级教程 双目立体视觉原理视差外极线几何双目标定 双目立体视觉之Halcon标定一.标定结果二.Halcon标定过程1.获取左右相机图像中标定板的区域;2.提取左右相机图像中标定板的MARK点坐标和摄像机外部参数;3.执行双目标定;4.获取非标准外极线几何到标…

YOLOv8 的双 Backbone 架构:解锁目标检测新性能

一、开篇:为何踏上双 Backbone 探索之路 在目标检测的领域中,YOLOv8 凭借其高效与精准脱颖而出,成为众多开发者和研究者的得力工具。然而,传统的单 Backbone 架构,尽管已经在诸多场景中表现出色,但仍存在一…

1.4 TypeScript 编译是如何工作的?

TypeScript 是 JavaScript 的超集,最显著的优势是引入了静态类型检查。它能帮助开发者在编写代码阶段捕获错误,从而提升代码的健壮性和可维护性。虽然 TypeScript 本身不能直接在浏览器或 Node.js 中运行,但它可以被编译成标准的 JavaScript&…

Web 服务、 Nfs 服务器以及 Dns 服务器综合实验

要求: 1.web 服务的资源文件通过 nfs 服务器共享 www.luntan.com 2.确保所有主机时间同步 3.定义本地 dns 服务器解析 web 主机域名 实验: 主机服务程序192.168.96.142dns、nfs192.168.96.132web 服务器说明: 设备 IP服务端 192…