首页 > 试题广场 >

寻找设计师

[编程题]寻找设计师
  • 热度指数:93 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

表: 物料清单表

+----------+--------------+
|  字段名称 | 类型         | 
+----------+--------------+
| 设计款号  | varchar(512) | 
| 设计师    | int          |
| 物料号    | varchar(512) | 
+----------+--------------+
设计款号 是该表的主键。
该表的每一行都表示 每一件服装款号(设计款号)所需的设计师、物料号。

表: 面料信息表

+-------------+--------------+
| 字段名称     | 类型     |
+-------------+--------------+
| 物料号      | varchar(512) |
| 物料类型     | varchar(512) |
+-------------+---------------+

物料号 是该表的主键。 
物料号 是 “物料清单表” 表中 物料号 的外键。
该表的每一行都表示不同类别物料的信息,包含物料号、物料类型信息。

 

编写一个SQL查询,查询设计师 01 使用了多少种不同的面料和多少种辅料。

查询结果如下例所示。

 

示例 1:

输入: 表:物料清单表
+------+-----+--------+
| 设计款号 | 设计师 | 物料号    |
+------+-----+--------+
| 00A  | 01  | sku01  |
| 00A  | 01  | sku02  |
| 00B  | 02  | sku02  |
| 00B  | 02  | sku03  |
| 00B  | 02  | sku04  |
| 00C  | 03  | sku01  |
| 00C  | 03  | sku03  |
| 00C  | 03  | sku04  |
| 00E  | 01  | sku01  |
| 00E  | 01  | sku03  |
+------+-----+--------+

表:面料信息表
+-------+-------+
| 物料号   | 物料类型  |
+-------+-------+
| sku01 | 面料    |
| sku02 | 面料    |
| sku03 | 辅料    |
| sku04 | 里料    |
+-------+-------+   
输出按照面料数降序排序: +----------+------------+
| 物料类型  |   面料数   |
+----------+------------+
| 面料     |     2      |
| 辅料     |     1      |
+----------+------------+

示例1

输入

CREATE TABLE 物料清单表
(
    设计款号 VARCHAR(512),
    设计师 INT,
    物料号 VARCHAR(512)
);
CREATE TABLE 面料信息表
(
    物料号 VARCHAR(512),
    物料类型 VARCHAR(512)
);
INSERT INTO 物料清单表 (设计款号, 设计师, 物料号) VALUES
('00A', 1, 'sku01'),
('00A', 1, 'sku02'),
('00B', 2, 'sku02'),
('00B', 2, 'sku03'),
('00B', 2, 'sku04'),
('00C', 3, 'sku01'),
('00C', 3, 'sku03'),
('00C', 3, 'sku04'),
('00E', 1, 'sku01'),
('00E', 1, 'sku03');
INSERT INTO 面料信息表 (物料号, 物料类型) VALUES
('sku01', '面料'),
('sku02', '面料'),
('sku03', '辅料'),
('sku04', '里料');

输出

物料类型|面料数
面料|2
辅料|1
select
m.物料类型,
count(distinct w.物料号 ) 面料数
from
面料信息表 m
inner join 物料清单表 w on w.物料号 = m.物料号
where
w.设计师 = '01'
group by
m.物料类型
order by
m.物料类型 desc

发表于 2025-11-28 15:17:40 回复(0)