Untitled
unknown
sql
2 years ago
9.2 kB
15
Indexable
-- 1. แสดงชื่อ ที่อยู่ เงินเดือน และชื่อแผนกของพนักงานทุกคน เรียงตามชื่อแผนก
SELECT e.name, e.address, d.name
FROM employees e, departments d
WHERE e.department_id = d.id
ORDER BY d.name;
SELECT e.name, e.address, d.name
FROM employees e
JOIN departments d on e.department_id = d.id
ORDER BY d.name;
-- 2. แสดงชื่อ ราคาสินค้า ชื่อผู้จำหน่าย และเบอร์โทรของผู้จำหน่ายสินค้า
SELECT p.name, p.price, s.phone_number
FROM products p
JOIN suppliers s on s.id = p.supplier_id;
-- 3. แสดงชื่อลูกค้าและชื่อเซลล์ในแต่ละ Order
SELECT o.id, c.name custName, e.name Sales
FROM orders o
JOIN customers c on c.id = o.customer_id
JOIN employees e on e.id = o.employee_id;
-- 4. แสดงจำนวน Order ของลูกค้าแต่ละคน
SELECT c.id, c.name, count(*) AS order_amount
FROM customers c
LEFT JOIN orders o ON c.id = o.customer_id
GROUP BY c.id;
-- 5. แสดงจำนวน Order ของเซลล์แต่ละคน
SELECT e.id, e.name, count(*) as order_amount
FROM employees e
LEFT JOIN orders o ON e.id = o.employee_id
GROUP BY e.id;
-- 6. จงหาชื่อ Supplier และจำนวน Product ที่แตกต่างกันทั้งหมดของแต่ละ Supplier
SELECT s.id, s.name, count(*)
FROM suppliers s
LEFT JOIN products p ON s.id = p.supplier_id
GROUP BY s.id;
-- 7. แสดงชื่อ supplier ที่มี product ราคามากกว่า 800 อย่างน้อย 1 ชนิด
SELECT s.id,s.name, count(*) as amount
FROM products p
JOIN suppliers s on s.id = p.supplier_id
WHERE p.price > 800
GROUP BY s.id;
-- 8. แสดงชื่อของ employee ทีอยู่ในแผนกฝ่ายขาย
SELECT e.name
FROM employees e
JOIN departments d on d.id = e.department_id
WHERE d.name = "ฝ่ายขาย";
-- 9. แสดงค่าเฉลี่ยของเงินเดือน Employee ในแต่ละแผนก
SELECT d.id, d.name, format(avg(e.salary), 2 ) AS AVG_Salary
FROM employees e
RIGHT JOIN departments d ON d.id = e.department_id
GROUP BY d.id
Order by d.id;
-- 10. แสดงยอดขายรวมทั้งหมด
SELECT format(sum(price * amount * (1-discount)), 2) as SalesALL
FROM order_items;
-- 11. แสดงยอดขายรวมในแต่ละวัน
SELECT o.date, format(sum(price * amount * (1-discount)), 2) as Sales
FROM order_items od
JOIN orders o ON o.id = od.order_id
GROUP BY o.date;
-- 12. แสดงชื่อลูกค้าและยอดซื้อรวมของลูกค้าแต่ละคน
SELECT c.id, c.name, format(sum(price * amount * (1-discount)), 2) as Total
FROM customers c
JOIN orders o ON c.id = o.customer_id
JOIN order_items oi ON o.id = oi.order_id
GROUP BY c.id;
-- 13. แสดงชื่อเซลล์และยอดขายของเซลล์แต่ละคน
SELECT e.id, e.name, format(sum(price * amount * (1-discount)), 2) as Total
FROM employees e
JOIN orders o ON e.id = o.employee_id
JOIN order_items oi ON o.id = oi.order_id
GROUP BY e.id;
-- 14. แสดงยอดขายรวมของแต่ละ Product โดยแสดงเฉพาะที่มียอดต่ำกว่า 20000
SELECT p.id, p.name, sum(oi.price * oi.amount * (1-oi.discount)) as `total`
FROM products p
JOIN order_items oi ON p.id = oi.product_id
GROUP BY p.id
HAVING `total` < 20000;
-- 15. แสดงชื่อ Product ที่มียอดขายมากที่สุด 5 อันดับแรก รวมถึงชื่อ supplier ด้วย
SELECT p.id, p.name, s.name, sum(oi.price * oi.amount * (1-oi.discount)) as `total`
FROM products p
JOIN order_items oi ON p.id = oi.product_id
JOIN suppliers s ON s.id = p.supplier_id
GROUP BY p.id
ORDER BY total DESC
Limit 5;
-- 16. แสดง product ที่มีจำนวนชิ้นในการขายมากสุด
SELECT p.id, p.name, sum(oi.amount) 'amount'
FROM products p
JOIN order_items oi ON p.id = oi.product_id
GROUP BY p.id
ORDER BY amount desc
LIMIT 1;
-- 17
SELECT c.name AS customer_name, p.name AS product_name, oi.amount
FROM customers c
JOIN orders o ON c.id = o.customer_id
JOIN order_items oi ON o.id = oi.order_id
JOIN products p ON oi.product_id = p.id;
-- 18
-- 18. แสดงชื่อลูกค้าที่มียอดสั่งไฮยีน่ามากสุด 5 อันดับแรก
SELECT c.name, SUM(oi.amount * oi.price * (1 - oi.discount)) AS total_order_amount
FROM customers c
JOIN orders o ON c.id = o.customer_id
JOIN order_items oi ON o.id = oi.order_id
GROUP BY c.id
ORDER BY total_order_amount DESC
LIMIT 5;
-- 19
SELECT c.name, SUM(oi.amount * oi.price * (1 - oi.discount)) AS total_order_amount
FROM customers c
JOIN orders o ON c.id = o.customer_id
JOIN order_items oi ON o.id = oi.order_id
GROUP BY c.id
HAVING total_order_amount > 10000;
-- 20
SELECT e.name AS salesperson_name, SUM(oi.amount * oi.price * (1 - oi.discount)) AS total_sales
FROM employees e
LEFT JOIN orders o ON e.id = o.employee_id
LEFT JOIN order_items oi ON o.id = oi.order_id
GROUP BY e.id
HAVING total_sales > (SELECT AVG(subtotal) FROM (
SELECT SUM(oi.amount * oi.price * (1 - oi.discount)) AS subtotal
FROM employees e
LEFT JOIN orders o ON e.id = o.employee_id
LEFT JOIN order_items oi ON o.id = oi.order_id
GROUP BY e.id
) AS avg_sales);
-- 21
-- Employees without sales
SELECT e.name AS employee_name
FROM employees e
LEFT JOIN orders o ON e.id = o.employee_id
WHERE o.id IS NULL;
-- Customers without orders
SELECT c.name AS customer_name
FROM customers c
LEFT JOIN orders o ON c.id = o.customer_id
WHERE o.id IS NULL;
-- 22
SELECT c.name AS customer_name, MAX(total_order_amount) AS max_order_amount
FROM customers c
JOIN (
SELECT customer_id, SUM(oi.amount * oi.price * (1 - oi.discount)) AS total_order_amount
FROM orders o
JOIN order_items oi ON o.id = oi.order_id
GROUP BY customer_id
HAVING SUM(oi.amount * oi.price * (1 - oi.discount)) <
(SELECT AVG(subquery.total_order_amount)
FROM (
SELECT customer_id, SUM(oi.amount * oi.price * (1 - oi.discount)) AS total_order_amount
FROM orders o
JOIN order_items oi ON o.id = oi.order_id
GROUP BY customer_id
) subquery
)
) subquery ON c.id = subquery.customer_id
GROUP BY customer_name;
-- 23
SELECT
Customers.CustomerID,
Customers.CustomerName,
COUNT(Orders.OrderID) AS OrderCount
FROM
Customers
JOIN
Orders ON Customers.CustomerID = Orders.CustomerID
WHERE
Orders.EmployeeID IS NULL
GROUP BY
Customers.CustomerID,
Customers.CustomerName
ORDER BY
OrderCount DESC
LIMIT 1;
-- 24
SELECT DISTINCT
Customers.CustomerID,
Customers.CustomerName
FROM
Customers
LEFT JOIN
Orders ON Customers.CustomerID = Orders.CustomerID
LEFT JOIN
OrderDetails ON Orders.OrderID = OrderDetails.OrderID
LEFT JOIN
Products ON OrderDetails.ProductID = Products.ProductID
LEFT JOIN
Suppliers ON Products.SupplierID = Suppliers.SupplierID
WHERE
Suppliers.SupplierName <> 'ไท เอฟเวอเรสต์' OR Suppliers.SupplierID IS NULL
ORDER BY
Customers.CustomerID;
-- 25
SELECT DISTINCT
Customers.CustomerID,
Customers.CustomerName
FROM
Customers
JOIN
Orders ON Customers.CustomerID = Orders.CustomerID
JOIN
OrderDetails ON Orders.OrderID = OrderDetails.OrderID
JOIN
Products ON OrderDetails.ProductID = Products.ProductID
WHERE
Products.ProductName IN ('น้ำดื่มคชสาร', 'น้ำดื่มแมมมอธ')
ORDER BY
Customers.CustomerID;
-- 26
SELECT DISTINCT
Customers.CustomerID,
Customers.CustomerName
FROM
Customers
JOIN
Orders ON Customers.CustomerID = Orders.CustomerID
JOIN
OrderDetails ON Orders.OrderID = OrderDetails.OrderID
JOIN
Products ON OrderDetails.ProductID = Products.ProductID
JOIN
Suppliers ON Products.SupplierID = Suppliers.SupplierID
WHERE
Suppliers.SupplierName = 'ไท อาเซียน แอตแลนติก'
AND Customers.CustomerID NOT IN (
SELECT
Customers.CustomerID
FROM
Customers
JOIN
Orders ON Customers.CustomerID = Orders.CustomerID
JOIN
OrderDetails ON Orders.OrderID = OrderDetails.OrderID
JOIN
Products ON OrderDetails.ProductID = Products.ProductID
JOIN
Suppliers ON Products.SupplierID = Suppliers.SupplierID
WHERE
Suppliers.SupplierName = 'ไท เอฟเวอเรสต์'
)
ORDER BY
Customers.CustomerID;
Editor is loading...
Leave a Comment