-- ========================================================================= -- BÀI 01: THỐNG KÊ SỐ LƯỢNG SẢN PHẨM TRONG TỪNG LOẠI HÀNG -- Kỹ thuật sử dụng: COUNT(), LEFT JOIN, GROUP BY -- ========================================================================= USE `labdb`; -- Cấu trúc bảng liên quan (Schema): CREATE TABLE IF NOT EXISTS `categories` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(100) NOT NULL, `description` VARCHAR(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `products` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `category_id` INT NOT NULL, `name` VARCHAR(150) NOT NULL, `price` DECIMAL(15, 2) NOT NULL DEFAULT 0.00, `stock` INT NOT NULL DEFAULT 0, CONSTRAINT `fk_products_category` FOREIGN KEY (`category_id`) REFERENCES `categories`(`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- Câu truy vấn chính của Bài 01: SELECT c.id AS category_id, c.name AS category_name, c.description, COUNT(p.id) AS product_count, COALESCE(SUM(p.stock), 0) AS total_stock FROM categories c LEFT JOIN products p ON c.id = p.category_id GROUP BY c.id, c.name, c.description ORDER BY product_count DESC, c.id ASC;