Programming & Development / April 16, 2025

Understanding SQL Queries Through Practical Examples: Sales and Order Analytics

SQL SQL queries GROUP_CONCAT DISTINCT JOIN GROUP BY MySQL data analysis sales data product orders SQL tutorial SQL examples

📘 Article Content:

In this article, we walk through two real-world examples of SQL use cases: analyzing product sales by date and summarizing high-volume product orders within a date range. These scenarios are commonly encountered in retail or e-commerce analytics.

📊 Part 1: Tracking Product Sales by Date

✅ Create and Prepare the Activities Table

First, we define a table Activities to capture each product sale along with its date:

sql

CREATE TABLE IF NOT EXISTS Activities (
    sell_date DATE, 
    product VARCHAR(20)
);
TRUNCATE TABLE Activities;

This ensures the table is clean before inserting new data.

🛒 Insert Sample Sales Data

sql

INSERT INTO Activities (sell_date, product) VALUES 
('2020-05-30', 'Headphone'),
('2020-06-01', 'Pencil'),
('2020-06-02', 'Mask'),
('2020-05-30', 'Basketball'),
('2020-06-01', 'Bible'),
('2020-06-02', 'Mask'),
('2020-05-30', 'T-Shirt');

This dataset includes multiple product sales on various dates, including duplicates like "Mask".

📈 Query: Unique Products Sold per Date

sql

SELECT 
    sell_date,
    COUNT(DISTINCT product) AS num_sold,
    GROUP_CONCAT(DISTINCT product ORDER BY product)
FROM Activities
GROUP BY sell_date
ORDER BY sell_date;

Explanation:

  • COUNT(DISTINCT product) gives the number of unique products sold on each date.
  • GROUP_CONCAT(...) returns a comma-separated list of those products, sorted alphabetically.
  • GROUP BY and ORDER BY organize the output by sell_date.

Use Case: This query is useful for understanding daily product diversity in sales.

📦 Part 2: Analyzing Product Orders by Category and Volume

✅ Drop and Recreate Product & Order Tables

sql

DROP TABLE IF EXISTS Products;
DROP TABLE IF EXISTS Orders;

CREATE TABLE IF NOT EXISTS Products (
    product_id INT, 
    product_name VARCHAR(40), 
    product_category VARCHAR(40)
);

CREATE TABLE IF NOT EXISTS Orders (
    product_id INT, 
    order_date DATE, 
    unit INT
);

TRUNCATE TABLE Products;
TRUNCATE TABLE Orders;

We clean up any previous data and recreate two tables: one for product details and one for order records.

📥 Insert Product and Order Data

Products Table:

sql

INSERT INTO Products (product_id, product_name, product_category) VALUES 
(1, 'Leetcode Solutions', 'Book'),
(2, 'Jewels of Stringology', 'Book'),
(3, 'HP', 'Laptop'),
(4, 'Lenovo', 'Laptop'),
(5, 'Leetcode Kit', 'T-shirt');

Orders Table:

sql

INSERT INTO Orders (product_id, order_date, unit) VALUES 
(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);

This dataset includes multiple orders for each product on different dates.

📊 Query: List Products Ordered ≥ 100 Units in February 2020

sql

SELECT 
    p.product_name, 
    o.unit
FROM (
    SELECT product_id, SUM(unit) AS unit
    FROM Orders
    WHERE order_date BETWEEN '2020-02-01' AND '2020-02-29'
    GROUP BY product_id
    HAVING unit >= 100
) o
INNER JOIN Products p ON o.product_id = p.product_id;

Explanation:

  • The subquery calculates the total units ordered per product in February 2020 and filters to only include products with ≥ 100 units sold.
  • The main query joins this result with the Products table to show the product names.

Use Case: Useful for inventory or supply chain teams to identify high-demand products in a time window.

🧠 Final Thoughts

These examples illustrate practical SQL for:

  • Summarizing product activity over time
  • Aggregating and filtering sales based on conditions
  • Joining tables to enrich query results with meaningful data

SQL remains a powerful tool for data analytics, especially when you structure your queries to break problems down into logical steps like aggregation, filtering, and joining.


Support Free Content Please Donate

Click here for Donate $2
Comments

No comments yet

Add a new Comment

NUHMAN.COM

Information Technology website for Programming & Development, Web Design & UX/UI, Startups & Innovation, Gadgets & Consumer Tech, Cloud Computing & Enterprise Tech, Cybersecurity, Artificial Intelligence (AI) & Machine Learning (ML), Gaming Technology, Mobile Development, Tech News & Trends, Open Source & Linux, Data Science & Analytics

Categories

Tags

©{" "} Nuhman.com . All Rights Reserved. Designed by{" "} HTML Codex