首页 > 试题广场 >

销售额TOP30的品牌信息

[编程题]销售额TOP30的品牌信息
  • 热度指数:51 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

表: 品牌表

+------------+--------------+
|  字段名称   | 类型         | 
+------------+--------------+
| 品牌号      |    int       |
| 品牌名      | varchar(512) |
+------------+--------------+

品牌号 是该表的主键。
该表的每一行记录每个品牌的信息,包含了品牌号、品牌名。

表: 品类表

+------------+--------------+
|  字段名称   | 类型         | 
+------------+--------------+
| 品类号      |    int       |
| 品类名      | varchar(512) |
+------------+--------------+

品类号 是该表的主键。
该表的每一行记录每个品类的信息,包含了品类号、品类名。

表: 月销售统计表

+-------------+---------------+
| 字段名称     | 类型          |
+-------------+---------------+
| 月份         |   date(255)  |
| 品牌号       |    int       |
| 品类号       |    int       |
| 电商平台     |  varchar(512)|
| 销售额       |     int      |
+-------------+---------------+

品牌号、品类号 是该表的主键。 
品牌号 是 “品牌表” 表中 品牌号 的外键,品类号 是 “品类表” 表中 品类号 的外键。
该表的每一行记录了公司在不同电商平台的销售信息,包括销售商品的月份 、品牌号、品类号
电商平台(“1”,“2”分别指不同的电商平台)、销售额。

 

编写一个SQL查询,查询 2019 年只在电商平台1上有销售额的品牌中 (即排除电商平台为 2 时销售额累计大于0的品牌), 电商平台1的累计销售额最大的Top30品牌及对应的销售额。

查询结果如下例所示。

 

示例 1:

输入: 表:品牌表
+-----+------+
| 品牌号 | 品牌名  |
+-----+------+
| 1   | abc  |
| 2   | a    |
| 3   | b    |
| 4   | c    |
| 5   | d    |
| 6   | e    |
| 7   | f    |
| 8   | g    |
| 9   | h    |
| 10  | i    |
| 11  | j    |
| 12  | k    |
| 13  | l    |
| 14  | m    |
| 15  | n    |
| 16  | o    |
| 17  | p    |
| 18  | q    |
| 19  | r    |
+-----+------+

表:品类表
+------+------+
| 品类号  | 品类名  |
+------+------+
| 1    | 食品   |
| 622  | 1    |
| 185  | 2    |
| 1153 | 3    |
| 927  | 4    |
| 600  | 5    |
| 820  | 6    |
| 9    | 7    |
| 183  | 8    |
| 651  | 9    |
| 552  | 10   |
| 277  | 11   |
| 1154 | 12   |
| 929  | 13   |
| 641  | 14   |
| 374  | 15   |
| 126  | 16   |
| 20   | 17   |
| 1136 | 18   |
+------+------+

表:月销售统计表 
+-----------+-----+------+------+-------+
| 月份        | 品牌号 | 品类号  | 电商平台 | 销售额   |
+-----------+-----+------+------+-------+
| 2019/12/1 | 1   | 1    | 1    | 1000  |
| 2019/11/1 | 90  | 622  | 1    | 2285  |
| 2019/10/1 | 200 | 185  | 2    | 542   |
| 2019/9/1  | 195 | 1153 | 1    | 2530  |
| 2019/8/1  | 130 | 927  | 1    | 1182  |
| 2019/7/1  | 93  | 600  | 2    | 1689  |
| 2019/6/1  | 194 | 820  | 1    | 2132  |
| 2019/5/1  | 182 | 9    | 2    | 1477  |
| 2019/4/1  | 139 | 183  | 2    | 2508  |
| 2019/3/1  | 102 | 651  | 2    | 1344  |
| 2019/2/1  | 155 | 552  | 2    | 2890  |
| 2019/1/1  | 221 | 277  | 1    | 967   |
| 2019/12/1 | 229 | 1154 | 1    | 2143  |
| 2019/11/1 | 112 | 929  | 1    | 2560  |
| 2019/10/1 | 51  | 641  | 1    | 2126  |
| 2019/9/1  | 17  | 374  | 1    | 2953  |
| 2019/8/1  | 144 | 126  | 1    | 1748  |
| 2019/7/1  | 89  | 20   | 2    | 1881  |
| 2019/6/1  | 219 | 1136 | 1    | 2095  |
+-----------+-----+------+------+-------+ 输出: +------------+---------+---------------+
|   品牌号    | 品牌名  | 平台1总销售额  |
+------------+---------+---------------+
|     158    |   131   |  27305       | 
|     84     |   57    |  11211       | 
|     235    |   208   |  8807        | 
|     236    |   209   |  3516        | 
+------------+---------+---------------+

示例1

输入

CREATE TABLE 品牌表
(
    品牌号 INT,
    品牌名 VARCHAR(512)
);

CREATE TABLE 品类表
(
    品类号 INT,
    品类名 VARCHAR(512)
);

CREATE TABLE 月销售统计表
(
    月份 DATE,
    品牌号 INT,
    品类号 INT,
    电商平台 VARCHAR(512),
    销售额 INT
);
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (1, 'abc');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (2, 'a');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (3, 'b');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (4, 'c');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (5, 'd');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (6, 'e');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (7, 'f');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (8, 'g');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (9, 'h');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (10, 'i');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (11, 'j');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (12, 'k');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (13, 'l');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (14, 'm');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (15, 'n');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (16, 'o');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (17, 'p');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (18, 'q');
INSERT INTO 品牌表 (品牌号, 品牌名) VALUES (19, 'r');
INSERT INTO 品类表 (品类号, 品类名) VALUES (1, '食品');
INSERT INTO 品类表 (品类号, 品类名) VALUES (622, '1');
INSERT INTO 品类表 (品类号, 品类名) VALUES (185, '2');
INSERT INTO 品类表 (品类号, 品类名) VALUES (1153, '3');
INSERT INTO 品类表 (品类号, 品类名) VALUES (927, '4');
INSERT INTO 品类表 (品类号, 品类名) VALUES (600, '5');
INSERT INTO 品类表 (品类号, 品类名) VALUES (820, '6');
INSERT INTO 品类表 (品类号, 品类名) VALUES (9, '7');
INSERT INTO 品类表 (品类号, 品类名) VALUES (183, '8');
INSERT INTO 品类表 (品类号, 品类名) VALUES (651, '9');
INSERT INTO 品类表 (品类号, 品类名) VALUES (552, '10');
INSERT INTO 品类表 (品类号, 品类名) VALUES (277, '11');
INSERT INTO 品类表 (品类号, 品类名) VALUES (1154, '12');
INSERT INTO 品类表 (品类号, 品类名) VALUES (929, '13');
INSERT INTO 品类表 (品类号, 品类名) VALUES (641, '14');
INSERT INTO 品类表 (品类号, 品类名) VALUES (374, '15');
INSERT INTO 品类表 (品类号, 品类名) VALUES (126, '16');
INSERT INTO 品类表 (品类号, 品类名) VALUES (20, '17');
INSERT INTO 品类表 (品类号, 品类名) VALUES (1136, '18');
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-12-01', 1, 1, '1', 1000);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-11-01', 90, 622, '1', 2285);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-10-01', 200, 185, '2', 542);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-09-01', 195, 1153, '1', 2530);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-08-01', 130, 927, '1', 1182);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-07-01', 93, 600, '2', 1689);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-06-01', 194, 820, '1', 2132);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-05-01', 182, 9, '1', 1477);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-04-01', 139, 183, '1', 2508);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-03-01', 102, 651, '1', 1344);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-02-01', 155, 552, '1', 2890);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-01-01', 221, 277, '1', 967);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-12-01', 229, 1154, '1', 2143);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-11-01', 112, 929, '1', 2560);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-10-01', 51, 641, '1', 2126);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-09-01', 17, 374, '1', 2953);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-08-01', 144, 126, '1', 1748);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-07-01', 89, 20, '2', 1881);
INSERT INTO 月销售统计表 (月份, 品牌号, 品类号, 电商平台, 销售额) VALUES ('2019-06-01', 219, 1136, '1', 2095);

输出

品牌号|品牌名|平台1总销售额
17|p|2953
1|abc|1000
select 
x.品牌号
,x.品牌名
,sum(销售额) as 平台1总销售额
from 品牌表 x 
join 月销售统计表  y 
on x.品牌号=y.品牌号
join 品类表 z 
on z.品类号=y.品类号
where left(月份,4)=2019 and 电商平台=1
group by 1,2
having sum(销售额)>0
order by 3 desc
limit 30

发表于 2025-11-13 13:21:13 回复(0)