表: 订单表 +----------+--------------+ 字段名称 类型 +----------+--------------+ 订单号 varchar(512) 商品号 varchar(512) 支付金额 int +----------+--------------+ 订单号 是该表的主键。 该表的每一行表示 每一个订单的信息,包含订单号、商品号、订单支付的金额。 表: 运费表 +-------------+--------------+ 字段名称 类型 +-------------+--------------+ 订单号 varchar(512) 包裹号 INT 商品号 varchar(512) 总运费 INT +-------------+--------------+ 订单号 、商品号 是该表的主键。 订单号 是 “订单表” 表中 订单号 的外键。 该表的每一行都表示每一件商品运费流水记录,包含订单号、包裹号、商品号、总运费。 表: 品类表 +-------------+---------------+ 字段名称 类型 +-------------+---------------+ 商品号 varchar(512) 商品类型 varchar(512) +-------------+---------------+ 商品号 是该表的主键。 商品号 是 “运费表” 表中 商品号 的外键。 该表的每一行都表示每一件商品商品对应的品类,包含商品号、商品类型。 编写一个SQL查询,查询每个品类的运费占比需要知道支付金额、运费和商品类型。 查询结果如下例所示。 示例 1: 输入: 表:订单表 +-----+-------+-------+ 订单号 商品号 支付金额 +-----+-------+-------+ 00A sku01 60 00A sku02 40 00B sku01 60 00B sku02 40 00B sku01 80 00C sku02 60 00C sku03 80 +-----+-------+-------+ 表:运费表 +-----+-----+-------+------+ 订单号 包裹号 商品号 总运费 +-----+-----+-------+------+ 00A 001 sku01 5 00A 001 sku02 6 00B 002 sku01 5 00B 002 sku02 6 00B 003 sku01 10 00C 004 sku02 5 00C 004 sku03 10 +-----+-----+-------+------+ 表:品类表 +-------+-------+ 商品号 商品类型 +-------+-------+ sku01 A sku02 B sku03 C +-------+-------+ 输出: +-----------+---------+--------+---------+ 商品类型 支付金额 总运费 运费占比 +-----------+---------+--------+---------+ 00A 180 15 0.083 00B 80 12 0.15 00C 160 20 0.125 +-----------+---------+--------+---------+ 解释: sum( 支付金额 )=总支付金额,sum( 总运费 )=总运费(sum( 总运费 ); 运费占比 = 总运费 总支付金额。
示例1

输入

CREATE TABLE 订单表
(
    订单号 VARCHAR(512),
    商品号 VARCHAR(512),
    支付金额 INT
);
CREATE TABLE 运费表
(
    订单号 VARCHAR(512),
    包裹号 INT,
    商品号 VARCHAR(512),
    总运费 INT
);
CREATE TABLE 品类表
(
    商品号 VARCHAR(512),
    商品类型 VARCHAR(512)
);
INSERT INTO 订单表 (订单号, 商品号, 支付金额) VALUES
('00A', 'sku01', 60),
('00A', 'sku02', 40),
('00B', 'sku01', 60),
('00B', 'sku02', 40),
('00B', 'sku01', 80),
('00C', 'sku02', 60),
('00C', 'sku03', 80);
INSERT INTO 运费表 (订单号, 包裹号, 商品号, 总运费) VALUES
('00A', 1, 'sku01', 5),
('00A', 1, 'sku02', 6),
('00B', 2, 'sku01', 5),
('00B', 2, 'sku02', 6),
('00B', 3, 'sku01', 10),
('00C', 4, 'sku02', 5),
('00C', 4, 'sku03', 10);
INSERT INTO 品类表 (商品号, 商品类型) VALUES
('sku01', 'A'),
('sku02', 'B'),
('sku03', 'C');

输出

商品类型|支付金额|总运费|运费占比
A|340|35|0.1029
B|140|17|0.1214
C|80|10|0.1250
加载中...