SQL已知2商品的总价,求商品的数量

已知商品1和2价格,求商品1的数量(商品2的数量自动计算),使得商品总价小于并最接近目标总价的值;

在这里插入图片描述
解决:
使用MySQL数据库:

-- 创建表
CREATE TABLE products (
    price_1 INT,
    price_2 INT,
    target_price INT,
    quantity_1 INT,
    quantity_2 INT
);

-- 插入数据
INSERT INTO products (price_1, price_2, target_price) VALUES (355, 230, 2400);
INSERT INTO products (price_1, price_2, target_price) VALUES (200, 120, 2322);
INSERT INTO products (price_1, price_2, target_price) VALUES (580, 320, 2322);
INSERT INTO products (price_1, price_2, target_price) VALUES (600, 380, 2350);
INSERT INTO products (price_1, price_2, target_price) VALUES (700, 290, 2460);

最终SQL:

SELECT 
    price_1  as 商品1价格,
    price_2 as 商品2价格,
    target_price as 总目标价,
    FLOOR(target_price / price_1) AS 商品1数量,
		FLOOR((target_price - price_1 * FLOOR(target_price / price_1)) / price_2) AS 商品2数量,
	
		( FLOOR(target_price / price_1) +  FLOOR((target_price - price_1 * FLOOR(target_price / price_1)) / price_2)) AS 商品总数2,
		    
    (FLOOR(target_price / price_1) * price_1 + FLOOR((target_price - price_1 * FLOOR(target_price / price_1)) / price_2) * price_2) AS 商品总价格 
FROM 
    products;

在这里插入图片描述
注释:
FLOOR函数是一种常见的数学函数,它将输入的数值向下取整到最接近的整数。在SQL中,FLOOR函数通常用于获得除法操作的整数部分,或者将小数向下舍入到最接近的整数。例如,FLOOR(3.8) 的结果是 3,FLOOR(4.2) 的结果也是 4。

SELECT 
    price_1  as 商品1价格, -- 选择商品1的价格,并将其命名为“商品1价格”
    price_2 as 商品2价格, -- 选择商品2的价格,并将其命名为“商品2价格”
    target_price as 总目标价, -- 选择目标总价,并将其命名为“总目标价”
    FLOOR(target_price / price_1) AS 商品1数量, -- 计算商品1的数量(总目标价除以商品1的价格,并向下取整),并将结果命名为“商品1数量”
		FLOOR((target_price - price_1 * FLOOR(target_price / price_1)) / price_2) AS 商品2数量, -- 计算商品2的数量(先计算商品1的总价,从总目标价中减去,然后除以商品2的价格,并向下取整),并将结果命名为“商品2数量”
	
		( FLOOR(target_price / price_1) +  FLOOR((target_price - price_1 * FLOOR(target_price / price_1)) / price_2)) AS 商品总数2, -- 计算商品总数(商品1数量加上商品2数量),并将结果命名为“商品总数2”
		    
    (FLOOR(target_price / price_1) * price_1 + FLOOR((target_price - price_1 * FLOOR(target_price / price_1)) / price_2) * price_2) AS 商品总价格 -- 计算商品的总价格(商品1的数量乘以商品1的价格再加上商品2的数量乘以商品2的价格),并将结果命名为“商品总价格”
FROM 
    products; -- 从名为“products”的表中选择数据进行计算
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值