DB2 SQL面试题:销售与购买数量统计

需积分: 0 23 下载量 4 浏览量 更新于2024-08-02 收藏 133KB DOC 举报
"这篇资料是关于SQL面试题的,适合准备公司面试的求职者参考。提供的题目涉及到数据库操作,特别是DB2环境下的数据处理。题目要求通过SQL语句从TableOne表中查询特定格式的数据,包括销售量(SaleQuantity)和购买量(BuyQuantity)按日期和产品ID分组。" 在SQL面试中,了解如何处理和分析数据是至关重要的。此题目的核心是使用SQL聚合函数来实现数据的汇总。在这个例子中,我们需要根据`Date`和`ProductID`字段对数据进行分组,并分别计算`SaleBuy`为'S'(销售)和'B'(购买)时的`quantity`总和,生成新的`SaleQuantity`和`BuyQuantity`列。这可以通过使用`CASE`语句配合`SUM`函数来实现。 首先,我们需要创建TableOne表的结构,代码如下: ```sql CREATE TABLE EBANK.TABLEONE ( DATE VARCHAR(8), SALEBUY VARCHAR(1), QUANTITY INTEGER, PRODUCTID VARCHAR(10) ); ``` 然后,插入给定的数据: ```sql INSERT INTO EBANK.TABLEONE (DATE, SALEBUY, QUANTITY, PRODUCTID) VALUES ('20071211', 'S', 1000, '1'), ('20080420', 'S', 2000, '1'), ('20071211', 'B', 3500, '2'), ('20080420', 'B', 4800, '1'), ('20071211', 'S', 2300, '2'), ('20071211', 'S', 5400, '2'), ('20071211', 'B', 2400, '2'); ``` 接下来,解决题目中的查询需求,我们可以编写如下SQL查询: ```sql SELECT DATE, SUM(CASE WHEN SALEBUY = 'S' THEN QUANTITY ELSE 0 END) AS SaleQuantity, SUM(CASE WHEN SALEBUY = 'B' THEN QUANTITY ELSE 0 END) AS BuyQuantity, PRODUCTID FROM EBANK.TABLEONE GROUP BY DATE, PRODUCTID; ``` 这个查询将返回符合题目要求的结果集,即按照日期、产品ID分组,并分别统计销售和购买的总量。 在实际的面试或工作中,这样的问题测试了SQL的高级功能,如条件聚合和数据分组,这些都是数据库管理员、数据分析师或软件开发者必须掌握的基本技能。对于准备面试的人来说,理解和熟练运用这类SQL查询是非常有益的。