SQL84 确定已售出产品项 BR01 的总数

文章提供了解决如何使用SQL查询语句从OrderItems表中统计prod_id为BR01的商品销售总量的方法。通过两种不同的SQL结构(CASEWHEN和IF)展示了如何计算特定商品的总数量。

描述

OrderItems表代表售出的产品,quantity代表售出商品数量,产品项为prod_item。

quantity

prod_id

10

AR01

100

AR10

1000

BR01

10001

BR010

【问题】修改创建的语句,确定已售出产品项(prod_item)为"BR01"的总数。

【示例结果】返回商品项已订购订单数

items_ordered

1000

【示例解析】已订购商品BR01的数量quantity为1000。

示例1

输入:

DROP TABLE IF EXISTS `OrderItems`;

CREATE TABLE IF NOT EXISTS `OrderItems`(

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

prod_id VARCHAR(255) NOT NULL COMMENT '商品项'

);

INSERT `OrderItems` VALUES (10,'AR01'),(100,'AR10'),(1000,'BR01'),(10001,'BR010');

复制

输出:

1000.000

答案

--方法一
select sum(case when prod_id='BR01' then quantity else 0 end) as items_ordered
from OrderItems

--方法二
select sum(if(prod_id='BR01',quantity,0)) as items_ordered
from OrderItems

接83题sum的应用

sum(case when prod_id='BR01' then quantity else 0 end) --当prod_id='BR01'的时候,加上quantity的值,否则加上0

sum(if(prod_id='BR01',quantity,0)) --同上,使用if(条件,满足条件返回,否则返回)函数

SQL应知应会挑战题包括以下内容: - 第15课挑战题:将自己添加到 Customers 表后删除自己,需使用 WHERE 子句,在 DELETE 前先用 SELECT 测试,示例代码为: ```sql SELECT * FROM Customers WHERE cust_id='me'; DELETE FROM Customers WHERE cust_id='me'; ``` - 10.7挑战题: - 查询每个订单订单号及订单行数,并按订单行数排序: ```sql SELECT order_num, COUNT(*) AS order_lines FROM OrderItems GROUP BY order_num ORDER BY order_lines; ``` - 查询每个供应商的最低产品价格,并按最低产品价格排序: ```sql SELECT vend_id, MIN(prod_price) AS prod_price FROM Products GROUP BY vend_id ORDER BY prod_price; ``` - 查询订单数量大于等于100订单号,并按订单号排序: ```sql SELECT order_num FROM OrderItems GROUP BY order_num HAVING SUM(quantity) >= 100 ORDER BY order_num; ``` - 查询订单总价大于等于1000订单号及订单总价,并按订单号排序: ```sql SELECT order_num, SUM(item_price*quantity) AS total_price FROM OrderItems GROUP BY order_num HAVING SUM(item_price*quantity) >= 1000 ORDER BY order_num; ``` - 子查询相关挑战题: - 查询订购 BR01 产品订单号和订单日期,并按订购日期排序: ```sql select order_num,order_date from Orders where order_num in(select order_num from OrderItems where prod_id = 'BR01') order by order_date; ``` - 查询订购 BR01 产品的顾客姓名和顾客邮箱: ```sql select cust_name,cust_email from Customers where cust_id in (select cust_id from Orders where order_num in(select order_num from OrderItems where prod_id = 'BR01')); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值