MySQL是關系型數據庫管理系統的一種,具有良好的性能、高可靠性和易用性。在MySQL中,使用SQL語言進行數據的存儲、查詢、更新等操作。在數據庫系統中,經常需要對多張表進行查詢和統計,本文將介紹在MySQL中如何對兩張表進行聯合查詢并統計數據。
我們假設有兩張表,一張是用戶表(users),另一張是訂單表(orders)。用戶表中包含用戶的ID、姓名、年齡等信息,訂單表中包含訂單的ID、用戶ID、商品ID、購買數量等信息。我們需要統計每個用戶的訂單總數、訂單總金額和平均購買數量。
-- 用戶表 CREATE TABLE users( id INT PRIMARY KEY, name VARCHAR(20), age INT ); -- 訂單表 CREATE TABLE orders( id INT PRIMARY KEY, user_id INT, product_id INT, quantity INT, price DECIMAL(8,2) ); -- 插入測試數據 INSERT INTO users(id, name, age) VALUES (1, 'Tom', 20); INSERT INTO users(id, name, age) VALUES (2, 'Jerry', 22); INSERT INTO orders(id, user_id, product_id, quantity, price) VALUES (1, 1, 1001, 2, 10.00); INSERT INTO orders(id, user_id, product_id, quantity, price) VALUES (2, 1, 1002, 3, 20.00); INSERT INTO orders(id, user_id, product_id, quantity, price) VALUES (3, 2, 1003, 1, 30.00); INSERT INTO orders(id, user_id, product_id, quantity, price) VALUES (4, 2, 1004, 4, 40.00);
我們可以使用SELECT語句對兩張表進行聯合查詢,并按照用戶ID進行分組,計算每個用戶的訂單總數、訂單總金額和平均購買數量。
SELECT users.id, users.name, COUNT(orders.id) AS order_count, SUM(orders.quantity * orders.price) AS total_amount, AVG(orders.quantity) AS avg_quantity FROM users LEFT JOIN orders ON users.id = orders.user_id GROUP BY users.id, users.name;
以上查詢語句中,使用LEFT JOIN關鍵字將用戶表和訂單表進行聯合查詢,按照用戶ID進行分組,對每個組進行統計。COUNT(orders.id)表示每個用戶的訂單總數,SUM(orders.quantity * orders.price)表示每個用戶的訂單總金額,AVG(orders.quantity)表示每個用戶的平均購買數量。
通過以上查詢語句,我們可以得到如下結果:
id name order_count total_amount avg_quantity 1 Tom 2 70.00 2.5000 2 Jerry 2 190.00 2.5000
以上結果表示Tom共有2個訂單,總金額為70元,平均購買數量為2.5個;Jerry共有2個訂單,總金額為190元,平均購買數量為2.5個。
綜上所述,MySQL中可以使用SELECT語句對兩張表進行聯合查詢并統計數據,使用GROUP BY關鍵字進行分組,使用COUNT、SUM、AVG等聚合函數進行統計。