返回介绍

solution / 1000-1099 / 1084.Sales Analysis III / README

发布于 2024-06-17 01:03:31 字数 2867 浏览 0 评论 0 收藏 0

1084. 销售分析 III

English Version

题目描述

表: Product

+--------------+---------+
| Column Name  | Type  |
+--------------+---------+
| product_id   | int   |
| product_name | varchar |
| unit_price   | int   |
+--------------+---------+
product_id 是该表的主键(具有唯一值的列)。
该表的每一行显示每个产品的名称和价格。

表:Sales

+-------------+---------+
| Column Name | Type  |
+-------------+---------+
| seller_id   | int   |
| product_id  | int   |
| buyer_id  | int   |
| sale_date   | date  |
| quantity  | int   |
| price     | int   |
+------ ------+---------+
这个表可能有重复的行。
product_id 是 Product 表的外键(reference 列)。
该表的每一行包含关于一个销售的一些信息。

 

编写解决方案,报告2019年春季才售出的产品。即2019-01-012019-03-31(含)之间出售的商品。

任意顺序 返回结果表。

结果格式如下所示。

 

示例 1:

输入:
Product table:
+------------+--------------+------------+
| product_id | product_name | unit_price |
+------------+--------------+------------+
| 1      | S8       | 1000     |
| 2      | G4       | 800    |
| 3      | iPhone     | 1400     |
+------------+--------------+------------+
Sales table:
+-----------+------------+----------+------------+----------+-------+
| seller_id | product_id | buyer_id | sale_date  | quantity | price |
+-----------+------------+----------+------------+----------+-------+
| 1     | 1      | 1    | 2019-01-21 | 2    | 2000  |
| 1     | 2      | 2    | 2019-02-17 | 1    | 800   |
| 2     | 2      | 3    | 2019-06-02 | 1    | 800   |
| 3     | 3      | 4    | 2019-05-13 | 2    | 2800  |
+-----------+------------+----------+------------+----------+-------+
输出:
+-------------+--------------+
| product_id  | product_name |
+-------------+--------------+
| 1       | S8       |
+-------------+--------------+
解释:
id 为 1 的产品仅在 2019 年春季销售。
id 为 2 的产品在 2019 年春季销售,但也在 2019 年春季之后销售。
id 为 3 的产品在 2019 年春季之后销售。
我们只返回 id 为 1 的产品,因为它是 2019 年春季才销售的产品。

解法

方法一:JOIN + GROUP BY + HAVING

我们可以通过 JOINSales 表和 Product 表连接起来,然后通过 GROUP BYHAVING 来筛选出符合条件的产品。

# Write your MySQL query statement below
SELECT product_id, product_name
FROM
  Sales
  JOIN Product USING (product_id)
GROUP BY 1
HAVING COUNT(1) = SUM(sale_date BETWEEN '2019-01-01' AND '2019-03-31');

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文