Lista los productos ordenados en un periodo

Escribe una solución para filtrar los nombres de los productos que tienen al menos 100 unidades vendidas en Febrero de 2020, calcula también el total de unidades. Regresa el resultado en cualquier orden.

#database#regex

Tabla: Products

+------------------+---------+
| Column Name      | Type    |
+------------------+---------+
| product_id       | int     |
| product_name     | varchar |
| product_category | varchar |
+------------------+---------+

- product_id es la llave primaria (columna con valores únicos).
- Esta tabla contiene información acerca de los productos de la compañía.

Tabla: Orders

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| product_id    | int     |
| order_date    | date    |
| unit          | int     |
+---------------+---------+

- Esta tabla puede contener filas duplicadas.
- product_id es una llave foranea (columna de referencia) hacia la tabla Products.
- unit es el número de productos ordenados en la fecha especificada en order_date.

El formato del resultado se muestra en el siguiente ejemplo.

Ejemplo 1:

Entrada:

Tabla Products:
+-------------+-----------------------+------------------+
| product_id  | product_name          | product_category |
+-------------+-----------------------+------------------+
| 1           | Leetcode Solutions    | Book             |
| 2           | Jewels of Stringology | Book             |
| 3           | HP                    | Laptop           |
| 4           | Lenovo                | Laptop           |
| 5           | Leetcode Kit          | T-shirt          |
+-------------+-----------------------+------------------+

Tabla Orders:
+--------------+--------------+----------+
| product_id   | order_date   | unit     |
+--------------+--------------+----------+
| 1            | 2020-02-05   | 60       |
| 1            | 2020-02-10   | 70       |
| 2            | 2020-01-18   | 30       |
| 2            | 2020-02-11   | 80       |
| 3            | 2020-02-17   | 2        |
| 3            | 2020-02-24   | 3        |
| 4            | 2020-03-01   | 20       |
| 4            | 2020-03-04   | 30       |
| 4            | 2020-03-04   | 60       |
| 5            | 2020-02-25   | 50       |
| 5            | 2020-02-27   | 50       |
| 5            | 2020-03-01   | 50       |
+--------------+--------------+----------+

Salida:

+--------------------+---------+
| product_name       | unit    |
+--------------------+---------+
| Leetcode Solutions | 130     |
| Leetcode Kit       | 100     |
+--------------------+---------+

Explicación:
- Producto con product_id = 1 fue ordenado en Febrero por un total de (60 + 70) = 130.
- Producto con product_id = 2 fue ordenado en Febrero por un total de 80.
- Producto con product_id = 3 fue ordenado en Febrero por un total de (2 + 3) = 5.
- Producto con product_id = 4 no fue ordenado en Febrero de 2020.
- Producto con product_id = 5 fue ordenado en Febrero por un total de (50 + 50) = 100.

Solución:

SELECT p.product_name,
       sum(o.unit) as unit
FROM products p
     INNER JOIN orders o
     ON o.product_id = p.product_id
WHERE order_date > '2020-01-31'
      AND order_date < '2020-03-01'
GROUP BY p.product_name
HAVING unit >= 100;

slackmart blog © 2024