SQL实战测试

SQL实战测试


(请写下 SQL 查询语句,不需要展示结果)

a

DateSalesCustomerRevenue
2019/1/1张三A10
2019/1/5张三A18

1. **用一条 ** SQL 语句写出每个月,每个销售有多少个客户收入多少

输出结果表头为“月”,“销售”,“客户数”,“收入”

SELECTEXTRACT(YEAR FROM Dates) || '-' || EXTRACT(MONTH FROM Dates) AS "月",Sales AS "销售",COUNT(DISTINCT Customer) AS "客户数",SUM(Revenue) AS "收入"
FROMA
GROUP BYEXTRACT(YEAR FROM Dates) || '-' || EXTRACT(MONTH FROM Dates),Sales
ORDER BY"月","销售";这个查询语句做了以下几件事情:使用 EXTRACT 函数从 sale_date 字段中提取年份和月份,并将其格式化为 "年-月" 的格式,作为 "月" 列。
使用 COUNT(DISTINCT customer_id) 来计算每个销售员每个月有多少个不同的客户。
使用 SUM(amount) 来计算每个销售员每个月的总收入。
使用 GROUP BY 来按年月和销售员分组,以确保我们得到每个月每个销售员的数据。
使用 ORDER BY 来对结果进行排序,首先按月份,然后按销售员。

2. 用一条 SQL 语句查询出 A B 客户的每个月的收入

输出结果表头为“月”,“客户”,“月收入”

SELECTEXTRACT(YEAR FROM Dates) || '-' || LPAD(EXTRACT(MONTH FROM Dates), 2, '0') AS "月",Customer AS "客户",SUM(Revenue) AS "月收入"
FROMA
WHERECustomer IN ('A', 'B')
GROUP BYEXTRACT(YEAR FROM Dates) || '-' || LPAD(EXTRACT(MONTH FROM Dates), 2, '0'),Customer
ORDER BY"月","客户";这个查询语句做了以下几件事情:使用 EXTRACT 函数从 sale_date 字段中提取年份和月份,并将其格式化为 "年-月" 的格式,作为 "月" 列。月份使用 LPAD 函数确保两位数字的格式(例如,01表示1月)。
使用 SUM(amount) 来计算每个客户每个月的总收入。
使用 WHERE 子句来限制查询只包括客户ID为 'A''B' 的记录。
使用 GROUP BY 来按年月和客户ID分组,以确保我们得到每个月每个客户的数据。
使用 ORDER BY 来对结果进行排序,首先按月份,然后按客户ID。

3. 用一条 SQL 语句查询出总收入在 300 以上的客户

输出结果表头为“客户”,“收入”

SELECTCustomer AS "客户",SUM(Revenue) AS "收入"
FROMA
GROUP BYCustomer
HAVINGSUM(REVENUE) > 300
ORDER BY"收入" DESC;这个查询语句做了以下几件事情:使用SUM(amount)来计算每个客户的总收入。
使用GROUP BY customer_id来按客户ID分组,以确保我们得到每个客户的数据。
使用HAVING SUM(amount) > 300来过滤出总收入超过300元的客户。注意,HAVING子句是在数据分组后应用的条件,因此它可以用来过滤聚合函数的结果。
使用ORDER BY "收入" DESC来对结果进行排序,按照收入从高到低排序。

4. **张三,王五为 ** 1 **组,李四,赵六为 ** 2 组,用一条 SQL 写出 1-4 1 组和 2 组对应的收入

输出结果表头为:“月”,“组”,“月收入”

SELECTEXTRACT(YEAR FROM sale_date) || '-' || LPAD(EXTRACT(MONTH FROM sale_date), 2, '0') AS "月",group_id AS "组",SUM(amount) AS "月收入"
FROMsales
JOINgroups ON sales.salesperson = groups.salesperson
WHEREEXTRACT(MONTH FROM sale_date) BETWEEN 1 AND 4
GROUP BYEXTRACT(YEAR FROM sale_date) || '-' || LPAD(EXTRACT(MONTH FROM sale_date), 2, '0'),group_id
ORDER BY"月","组";这个查询语句做了以下几件事情:使用 EXTRACT 函数从 sale_date 字段中提取年份和月份,并将其格式化为 "年-月" 的格式,作为 "月" 列。月份使用 LPAD 函数确保两位数字的格式(例如,01表示1月)。
使用 SUM(amount) 来计算每个组每个月的总收入。
使用 JOIN 来连接 sales 表和 groups 表,以便我们可以根据销售员的组ID进行分组。
使用 WHERE 子句来限制查询只包括1月到4月的记录。
使用 GROUP BY 来按年月和组ID分组,以确保我们得到每个月每个组的数据。
使用 ORDER BY 来对结果进行排序,首先按月份,然后按组ID。

5. 用一条 SQL 语句查询出每个销售总收入最高的两天

输出结果表头为“销售”,“日期”,“总收入”

SELECTsalesperson AS "销售",sale_date AS "日期",amount AS "总收入"
FROM (SELECTsalesperson,sale_date,amount,ROW_NUMBER() OVER (PARTITION BY salesperson ORDER BY amount DESC) AS rnFROMsales
) t
WHERErn <= 2
ORDER BY"销售","日期";这个查询语句做了以下几件事情:使用 ROW_NUMBER() 窗口函数来为每个销售员的收入按降序排列,为每天的收入分配一个行号。
使用 PARTITION BY salesperson 来确保行号是在每个销售员的记录中独立分配的。
使用 ORDER BY amount DESC 来确保收入最高的天有最小的行号。
从子查询中选择行号小于或等于2的记录,这将给我们每个销售员收入最高的两天。
使用 ORDER BY "销售", "日期" 来对结果进行排序,首先按销售员,然后按日期

b

CustomerCustomer_idSexual
A00001
B00002
C00003
D00004
E00005
F00006

6. 使用表****A 和表 B ,用一条 SQL 语句查询出每个客户的总收入

输出结果表头为“客户”,“客户 id ”,“性别”,“总收入”


SELECTB.Customer AS "客户",B.Customer_id AS "客户ID",B.Sexual AS "性别",SUM(A.Revenue) AS "总收入"
FROMB
JOINA ON B.customer = A.customer
GROUP BYB.Customer,B.Customer_id,B.Sexual
ORDER BY"总收入" DESC;这个查询语句做了以下几件事情:使用JOIN语句来连接表A和表B,通过customer_id字段将两个表关联起来。
使用SUM(B.sale_amount)来计算每个客户的总收入。
使用GROUP BY来按客户姓名、客户ID和性别分组,以确保我们得到每个客户的数据。
使用ORDER BY "总收入" DESC来对结果进行排序,按照总收入从高到低排序。

建表信息与查询测试结果
表A:

--drop table A;
CREATE TABLE A (Dates	VARCHAR(512),Sales	VARCHAR(512),Customer	VARCHAR(512),Revenue 	INT
);INSERT INTO A (Dates, Sales, Customer, Revenue ) VALUES (TO_DATE('2019/1/1', 'YYYY-MM-DD'), '张三', 'A', '10 ');
INSERT INTO A (Dates, Sales, Customer, Revenue ) VALUES (TO_DATE('2019/1/5', 'YYYY-MM-DD'), '张三', 'A', '18');

表B:

--drop table B;
CREATE TABLE B (Customer	VARCHAR(512),Customer_id	VARCHAR(512),Sexual 	VARCHAR(512)
);INSERT INTO B (Customer, Customer_id, Sexual ) VALUES ('A', '00001', '男');
INSERT INTO B (Customer, Customer_id, Sexual ) VALUES ('B', '00002', '男');
INSERT INTO B (Customer, Customer_id, Sexual ) VALUES ('C', '00003', '女');
INSERT INTO B (Customer, Customer_id, Sexual ) VALUES ('D', '00004', '男');
INSERT INTO B (Customer, Customer_id, Sexual ) VALUES ('E', '00005', '女');
INSERT INTO B (Customer, Customer_id, Sexual ) VALUES ('F', '00006', '女');

查询结果展示:
1.在这里插入图片描述
2.在这里插入图片描述
6.在这里插入图片描述

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

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

相关文章

i春秋web题库——题目名称:SQLi

WEB——SQLi 写在之前&#xff1a;题目简介&#xff1a;题目分析&#xff1a; 写在之前&#xff1a; 本题在CSDN上或是其它博客上有过解答&#xff0c;只不过不知是什么原因&#xff0c;我没有找到解题过程比较完整的文章。于是我决定在CTF初学阶段写一篇这样的博客&#xff0…

【lca,树上差分】P3128 [USACO15DEC] Max Flow P

题意 给定大小为 n ( 2 ≤ n ≤ 5 1 0 4 ) n(2 \leq n \leq 5 \times 10^4) n(2≤n≤5104) 的树&#xff0c;并给定 m ( 1 ≤ m ≤ 1 0 5 ) m(1 \leq m \leq 10^5) m(1≤m≤105) 条树上的路径&#xff08;给定两个端点&#xff0c;容易证明两个点树上路径唯一&#xff09;&…

迭代器失效和支持随机访问的容器总结

创作活动 迭代器失效&#xff1a; 顺序容器&#xff08;如vector、deque、list&#xff09; vector 插入操作&#xff1a; 当在vector中间或头部插入元素时&#xff0c;所有位于插入点之后的迭代器都会失效。这是因为vector的元素在内存中是连续存储的&#xff0c;插入元素可能…

15.6 JDBC数据库编程6——可滚动和可更新的ResultSet

目录 15.6 引言 15.6.1 可滚动的ResultSet 15.6.1 可更新的ResultSet 15.6 引言 可滚动的ResultSet是指在结果集对象上不但可以向前访问结果集中的记录&#xff0c;还可以向后访问结果集中记录。可更新的ResultSet是指不但可以访问结果集中的记录&#xff0c;还可以更新…

【深度学习代码调试5】标准化数据集:TensorFlow Datasets (TFDS)自动化数据加载与预处理

【标准化数据集】TensorFlow Datasets、TFDS&#xff1a;自动化数据加载与预处理 写在最前面1. 什么是 TensorFlow Datasets (TFDS)?主要特点&#xff1a; 2. TFDS 的核心 API&#xff1a;tfds.builder 和 download_and_preparetfds.builder&#xff1a;创建数据集构建器示例&…

【大数据学习 | Zookeeper】Zookeeper的选举机制

zookeeper的选举机制分为第一次启动和非第一次启动两种情况。 1. 选举机制 - > 第一次启动 (1)服务器1启动&#xff0c;发起一次选举。服务器1投自己一票。此时服务器1票数一票&#xff0c;不够半数以上(3票)&#xff0c;选举无法完成&#xff0c;服务器1状态保持为 LOOKIN…

STM32之EC800K 4G模块驱动

1.EC800K简介 EC800K&#xff0c;特别是EC800K-CN&#xff0c;是移远通信专为M2M&#xff08;机器对机器&#xff09;和IoT&#xff08;物联网&#xff09;领域而设计的超小尺寸LTE Cat 1无线通信模块。EC800K-CN作为一款专为M2M和IoT领域设计的LTE Cat 1无线通信模块&#xff…

w~视觉~合集8

我自己的原文哦~ https://blog.51cto.com/whaosoft/12320868 #xx1 基于mxnet的训练代码迁移到pytorch上和 在yolov5的代码基础上验证了一些目标检测的想法一起发了 在迁移mxnet训练代码的时候&#xff0c;很长一段时间结果都无法对齐&#xff0c;于是我不得不又重新认真的读…

Flutter Column组件实战案例

In this section, we’ll explore the Column widget, a fundamental tool for arranging widgets vertically in Flutter. We’ll dive into its functionality and guide you through using it effectively to create well-organized and visually appealing layouts. 在本节…

UE5 第一人称示例代码阅读0 UEnhancedInputComponent

UEnhancedInputComponent使用流程 我的总结示例分析firstthenand thenfinally&代码关于键盘输入XYZ 我的总结 这个东西是一个对输入进行控制的系统&#xff0c;看了一下第一人称例子里&#xff0c;算是看明白了&#xff0c;但是感觉这东西使用起来有点绕&#xff0c;特此梳…

Ubuntu开启路由转发功能

IP转发允许系统在不同的网络接口之间路由数据包&#xff0c;这对于设置路由器等任务至关重要。下面是在Ubuntu上临时和永久启用IP转发的步骤。 1. 查看“当前IP转发状态” sysctl net.ipv4.ip_forward其中&#xff1a; ① net.ipv4.ip_forward 0 表示IP转发功能关闭 …

ctfshow(41)--RCE/命令执行漏洞--或绕过

Web41 源代码&#xff1a; if(isset($_POST[c])){$c $_POST[c]; if(!preg_match(/[0-9]|[a-z]|\^|\|\~|\$|\[|\]|\{|\}|\&|\-/i, $c)){eval("echo($c);");} }else{highlight_file(__FILE__); }代码审计&#xff1a; 过滤了数字和字母&#xff0c;但没有过滤或…

语言模型微调:提升语言Agent性能的新方向

人工智能咨询培训老师叶梓 转载标明出处 大多数语言Agent依赖于少量样本提示技术&#xff08;few-shot prompting&#xff09;和现成的语言模型。这些模型在作为Agent使用时&#xff0c;如生成动作或自我评估&#xff0c;通常表现不佳&#xff0c;且鲁棒性差。 论文《FIREACT…

随机抽取学号

idea 配置 抽学号 浏览器 提交一个100 以内的整数。&#xff0c;后端接受后&#xff0c;根据提供的整数&#xff0c;产生 100 以内的 随机数&#xff0c;返回给浏览器&#xff1f; 前端&#xff1a;提供 随机数范围 &#xff0c;病发送请求后端&#xff1a;处理随机数的产生&…

学习记录:js算法(七十四):跳跃游戏II

文章目录 跳跃游戏II思路一&#xff1a;贪心算法思路二&#xff1a;动态规划思路三&#xff1a;广度优先搜索 (BFS)思路四&#xff1a;深度优先搜索 (DFS) 跳跃游戏II 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的…

python表格处理prettytable vs pandas

prettytable和pandas简介 Python中prettyTable和pandas都是用于处理和展示数据的工具&#xff0c;但它们在设计目标、功能和使用场景上有显著的不同。 PrettyTable是一个轻量级的库&#xff0c;主要用于创建美观的ASCII表格&#xff0c;让表格数据在命令行或文本界面中看起来更…

【电机应用】变频器控制——变频水泵、变频空调

【电机应用】变频器控制——变频水泵、变频空调 文章目录 [TOC](文章目录) 前言一、变频器1、变频器的组成2、变频器的工作原理3、变频器常用算法 二、变频器的应用场景1、变频水泵2、变频空调 三、参考文献总结 前言 使用工具&#xff1a; 提示&#xff1a;以下是本篇文章正文…

QHeaderView添加复选框以及样式

实现这个效果&#xff0c;需要重写paintSection来实现效果&#xff0c;同时重写mousePressEvent来执行是否勾选复选框。 paintSection实现一些复选框样式 void CheckBoxHeaderView::paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const {if (m_…

Android 原生开发与Harmony原生开发浅析

Android系统 基于Linux ,架构如下 底层 (Linux )> Native ( C层) > FrameWork层 (SystemService) > 系统应用 (闹钟/日历等) 从Android发版1.0开始到现在15,经历了大大小小的变革 从Android6.0以下是个分水岭,6.0之前权限都是直接卸载Manifest中配置 6.0开始 则分普…

Matlab|基于氢储能的热电联供型微电网优化调度方法

目录 1 主要内容 模型求解流程 2 部分程序 3 程序结果 日前调度 日内调度 4 下载链接 1 主要内容 该程序复现《基于氢储能的热电联供型微电网优化调度方法》&#xff0c;针对质子交换膜燃料电池和电解槽的热电联供特性&#xff0c;为避免氢能系统的热能浪费并进一步提高…