SQL100 确定最佳顾客的另一种方式(二)

这篇具有很好参考价值的文章主要介绍了SQL100 确定最佳顾客的另一种方式(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

描述

OrderItems表代表订单信息,确定最佳顾客的另一种方式是看他们花了多少钱,OrderItems表有订单号order_num和item_price商品售出价格、quantity商品数量

order_num item_price quantity
a1 10 105
a2 1 1100
a2 1 200
a4 2 1121
a5 5 10
a2 1 19
a7 7 5

Orders表含有字段order_num 订单号、cust_id顾客id

order_num cust_id
a1 cust10
a2 cust1
a3 cust2
a4 cust22
a5 cust221
a7 cust2217

顾客表Customers有字段cust_id 客户id、cust_name 客户姓名

cust_id cust_name
cust10 andy
cust1 ben
cust2 tony
cust22 tom
cust221 an
cust2217 hex

【问题】编写 SQL 语句,返回订单总价不小于1000 的客户名称和总额(OrderItems 表中的order_num)。

提示:需要计算总和(item_price 乘以 quantity)。按总额对结果进行排序,请使用INNER JOIN 语法。

【示例结果】

cust_name total_price
andy 1050
ben 1319
tom 2242

【示例解析】

总额(item_price 乘以 quantity)大于等于1000的订单号,例如a2对应的顾客id为cust1,cust1的顾客名称cust_name是ben,最后返回ben作为order_num a2的quantity * item_price总和的结果1319。

示例1

输入:

DROP TABLE IF EXISTS `OrderItems`;
CREATE TABLE IF NOT EXISTS `OrderItems`(
	order_num VARCHAR(255) NOT NULL COMMENT '商品订单号',
	item_price INT(16) NOT NULL COMMENT '售出价格',
	quantity INT(16) NOT NULL COMMENT '商品数量'
);
INSERT `OrderItems` VALUES ('a1',10,105),('a2',1,1100),('a2',1,200),('a4',2,1121),('a5',5,10),('a2',1,19),('a7',7,5);


DROP TABLE IF EXISTS `Customers`;
CREATE TABLE IF NOT EXISTS `Customers`(
	cust_id VARCHAR(255) NOT NULL COMMENT '客户id',
	cust_name VARCHAR(255) NOT NULL COMMENT '客户姓名'
);
INSERT `Customers` VALUES ('cust10','andy'),('cust1','ben'),('cust2','tony'),('cust22','tom'),('cust221','an'),('cust2217','hex');

DROP TABLE IF EXISTS `Orders`;
CREATE TABLE IF NOT EXISTS `Orders`(
  order_num VARCHAR(255) NOT NULL COMMENT '商品订单号',
  cust_id VARCHAR(255) NOT NULL COMMENT '顾客id'
);
INSERT `Orders` VALUES ('a1','cust10'),('a2','cust1'),('a3','cust2'),('a4','cust22'),('a5','cust221'),('a7','cust2217');

复制输出:

andy|1050.000
ben|1319.000
tom|2242.000

复制

《SQL必知必会(第5版)》独家授权

答案

首先求出OrderItems中每个顾客消费的总额,使用sum函数相加,然后将三张表内联起来,挑出消费总额>1000的数据。

注意:提示中提到了根据消费总额进行排序,以及必须使用内联文章来源地址https://www.toymoban.com/news/detail-421575.html

select t4.cust_name,t2.total_price
from (select t1.order_num,sum(t1.item_price*t1.quantity) as total_price 
from OrderItems t1
group by t1.order_num) t2
inner join Orders t3 on t2.order_num=t3.order_num
inner join Customers t4 on t3.cust_id=t4.cust_id
where t2.total_price>1000
order by t2.total_price asc

到了这里,关于SQL100 确定最佳顾客的另一种方式(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • osgfbo(七)纹理坐标的另一种表示方法

    在此,先修改下osgfbo(五)中纹理坐标的表示方法,不是说osgfbo(五)中的做法不对,而是我更愿意明确的把纹理坐标数组赋值到(0,1)之间。即 1,设置纹理坐标 osg::ref_ptrosg::Vec2Array texCoord = new osg::Vec2Array; texCoord-push_back(osg::Vec2(0.0, 0.0)); texCoord-push_back(osg::Vec2(1.0, 0.0)); texCoord

    2023年04月08日
    浏览(43)
  • 拥抱jsx,开启vue3用法的另一种选择??

    公司高级表单组件ProForm高阶组件都建立在jsx的运用配置上,项目在实践落地过程中积累了丰富的经验,也充分感受到了jsx语法的灵活便捷和可维护性强大,享受到了用其开发的乐趣,独乐乐不如众乐乐,为了帮助大家更好的运用jsx,开发提效,特此总结分享。 以往我们开发

    2024年02月08日
    浏览(72)
  • 智能家居的另一种形式:智能家居中心的技术架构

    作者:禅与计算机程序设计艺术 随着智能设备的普及、互联网技术的飞速发展以及人们对智能家居产品的追求,越来越多的人选择将家居环境变成一个“智能”的地方,比如通过智能安防系统、智能遥控器、智能监控等方式帮助用户实现更加精细化的生活控制和场景管理。但

    2024年02月07日
    浏览(45)
  • git提交的时候出现异常“bad object HEAD”的另一种解决方案

    Git仓库是目前很主流的代码管理工具,一旦被损坏或出现异常,内心想直接吐血。 当进入到Git仓库执行命令: git status 显示: fatal: bad object HEAD 在此尝试用git checkout git reflog 等命令希望能恢复,但都是提示错误。在网上搜索大部分看到的是如下的解决方式: 但是我的代码分

    2024年02月02日
    浏览(38)
  • 在Linux云服务器上部署stable diffusion的lora训练的另一种方法

    这里参考了https://www.bilibili.com/video/BV1fs4y1x7p2/?vd_source=419c9ebc4060e9bec24d95773bba5275 LoRA 模型训练教程 一键包 以及: https://colab.research.google.com/drive/1_f0qJdM43BSssNJWtgjIlk9DkIzLPadx#scrollTo=8Qp6STJk2Wjh 首先是安装miniconda 或者 anaconda 来获得虚拟环境: 建立虚拟环境: 这里我们只需要有pytho

    2024年02月16日
    浏览(38)
  • SQL的substring函数及其用法实例——MYSQL另一种截取目标字符的函数

    目录 1.substring()的语法和用法实例 (1)两个参数的语法和用法实例 ①语法:substring(string ,index)|substring(string from index) ②用法实例: 从指定字符串的某序数开始获取字符 (2)三个参数的语法和用法实例 ①语法:substring(string ,index,len)|substring(string from index for len) ②用法实

    2023年04月08日
    浏览(29)
  • 路由器端口转发&远程桌面控制:一电脑连接不同局域网的另一电脑

    一、引言          路由器端口转发 :指在路由器上设置一定的规则,将外部的数据包转发到内部指定的设备或应用程序。这通常需要对路由器进行一些配置,以允许外部网络访问内部网络中的特定服务和设备。端口转发功能可以实现多种应用场景,例如远程桌面、FTP、

    2024年04月15日
    浏览(39)
  • 在局域网中的另一台主机如何访问WSL中的MiniKube生成的微服务

    我在WSL(Windows Subsystem for Linux)安装了Minikube中并设置好了Kubernetes环境。在Kubernetes环境中配置好微服务后,从局域网中的另一台主机无法访问WSL中的MiniKube生成的微服务,通过网络转发解决了这个问题。 设置Minikube可参考How to Install Minikube on Ubuntu 22.04 / 20.04,验证在WSL(Wind

    2024年02月12日
    浏览(37)
  • 智能车竞赛模糊PID过程详解,附matlab模拟代码,使用的C代码在我的另一篇文章中

    目录 普通位置式PID控制  模糊PID控制 区间划分 模糊化 清晰化 改进 模糊PID的MATLAB代码 模糊PID的m测试使用文件,可一步步运行了解详细过程 模糊PID的主函数和功能函数matlab代码 模糊PID的使用和调参技巧 PID 控制分为比例,微分,积分三项,其公式如下: U (t) = Kp ∗ err (t)

    2024年04月16日
    浏览(39)
  • 解决执行 spark.sql 时版本不兼容的一种方式

    场景描述 hive 数据表的导入导出功能部分代码如下所示,使用 assemble 将 Java 程序和 spark 相关依赖一起打成 jar 包,最后 spark-submit 提交 jar 到集群执行。 在CDH6.3.2 集群(后面称CDH),当程序执行 spark.sql 导入本地磁盘 csv 数据到 hive 表时出现异常(如下),但导出表数据到本地

    2024年02月12日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包