SQL95 从 Products 表中检索所有的产品名称以及对应的销售总数

文章提供了一个SQL查询示例,用于从Products表中检索所有产品名称,并结合OrderItems表的子查询计算每个产品的总销售量(quant_sold)。查询结果展示了产品名称和对应的销售总量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述

Products 表中检索所有的产品名称:prod_name、产品id:prod_id

prod_id

prod_name

a0001

egg

a0002

sockets

a0013

coffee

a0003

cola

OrderItems代表订单商品表,订单产品:prod_id、售出数量:quantity

prod_id

quantity

a0001

105

a0002

1100

a0002

200

a0013

1121

a0003

10

a0003

19

a0003

5

【问题】

编写 SQL 语句,从 Products 表中检索所有的产品名称(prod_name),以及名为 quant_sold 的计算列,其中包含所售产品的总数(在 OrderItems 表上使用子查询和 SUM(quantity)检索)。

【示例结果】返回产品名称prod_name和产品售出数量总和

prod_name

quant_sold

egg

105

sockets

1300

coffee

1121

cola

34

【示例解析】prod_name是cola的prod_id为a0003,quantity总量为34,返回结果无需排序。

示例1

输入:

DROP TABLE IF EXISTS `Products`;

CREATE TABLE IF NOT EXISTS `Products` (

`prod_id` VARCHAR(255) NOT NULL COMMENT '产品 ID',

`prod_name` VARCHAR(255) NOT NULL COMMENT '产品名称'

);

INSERT INTO `Products` VALUES ('a0001','egg'),

('a0002','sockets'),

('a0013','coffee'),

('a0003','cola');

DROP TABLE IF EXISTS `OrderItems`;

CREATE TABLE IF NOT EXISTS `OrderItems`(

prod_id VARCHAR(255) NOT NULL COMMENT '产品id',

quantity INT(16) NOT NULL COMMENT '商品数量'

);

INSERT `OrderItems` VALUES ('a0001',105),('a0002',1100),('a0002',200),('a0013',1121),('a0003',10),('a0003',19),('a0003',5);

复制

输出:

egg|105.000

sockets|1300.000

coffee|1121.000

cola|34.000

答案

select t1.prod_name,round(sum(t2.quantity),3) as quant_sold 
from Products t1,OrderItems t2
where t1.prod_id=t2.prod_id
group by t1.prod_name
### SQL入门教程 对于希望掌握SQL基础的学习者而言,了解基本概念和语法至关重要。SQL(Structured Query Language)是一种用于管理和操作关系型数据库的标准编程语言[^2]。 #### 1. 基本查询语句 最简单的SQL命令之一是`SELECT`语句,它允许从检索数据: ```sql SELECT column_name(s) FROM table_name; ``` 此命令可以用来获取特定列的数据或者通过使用星号(*)来返回整个格的内容。 #### 2. 数据过滤条件 为了更精确地控制所选记录,在`WHERE`子句后面加上适当达式能够实现这一点: ```sql SELECT * FROM customers WHERE country='Germany'; ``` 这会筛选出客户里国家字段等于德国的所有条目。 #### 3. 排序结果集 利用`ORDER BY`关键字可按照指定的一列或多列升序(ASC,默认行为)或降序排列输出的结果集合: ```sql SELECT customername, city FROM customers ORDER BY city DESC; ``` 上述例子展示了如何按城市名逆向排序显示顾客姓名及其所在的城市名称列。 #### 4. 聚合函数的应用 聚合函数如COUNT(), SUM(), AVG()等可以帮助统计分析大量数据。例如计算订单总数: ```sql SELECT COUNT(orderid) AS order_count FROM orders; ``` 这里定义了一个别名为order_count的新列来存储总订单数目的值。 #### 5. 组合多张的信息 当涉及到多个相互关联的实体时,则需要用到JOIN操作符连接不同的并提取所需信息。比如要找出每种产品的供应商详情就可以这样做: ```sql SELECT products.productname, suppliers.companyname FROM products INNER JOIN suppliers ON products.supplierid=suppliers.id; ``` 这段代码实现了基于共同键 supplierID 的两个之间的内部联接,从而得到产品对应的供应商家的名字。 除了理论上的学习之外,实践同样重要。像www.sqlzoo.cn这样的在线资源不仅提供了丰富的教学材料,还配备了实时交互环境供读者动手尝试编写真实的SQL指令[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值