Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
9.2 kB
5
Indexable
Never
Lam trong gio
USE Northwind

SELECT *
FROM Products

SELECT *
FROM Customers

SELECT *
FROM Employees

SELECT *
FROM Orders

SELECT *
FROM [Order Details]

-- Hiển thị thông tin địa chỉ của từng nhân viên

SELECT FirstName, LastName, [Address], TitleOfCourtesy
FROM Employees

-- 6.1 Đổi vị trí cột

SELECT TitleOfCourtesy, FirstName, LastName, [Address] 
FROM Employees

--6.2: ghép cột
SELECT TitleOfCourtesy, FirstName+LastName, [Address] 
FROM Employees

--6.3: clean code
SELECT TitleOfCourtesy, FirstName+ ''+LastName AS Fullname, [Address] 
FROM Employees
--6.4: clean code ver 2
SELECT TitleOfCourtesy, FirstName + ' '+ LastName  Fullname, [Address] 
FROM Employees
--7. Thực hiện gửi thiệp tri ân khách hàng của công ty
SELECT CompanyName, ContactName, ContactTitle, [Address], City, Country, Phone, Fax
FROM Customers
--8. Phân chia danh sách theo quốc gia
--Mặc định
SELECT CompanyName, ContactName, ContactTitle, [Address], City, Country, Phone, Fax
FROM Customers
ORDER BY Country ASC
--Ngược lại
SELECT CompanyName, ContactName, ContactTitle, [Address], City, Country, Phone, Fax
FROM Customers
ORDER BY Country DESC
--9. Thống kê thông tin về giá của các sản phẩm sắp xếp từ thấp đến cao
SELECT ProductName, QuantityPerUnit, UnitPrice
FROM Products
ORDER BY UnitPrice ASC
--10. Liệt kê top 10 sản phẩm có đơn giá cao nhất
SELECT TOP 10 ProductName, QuantityPerUnit, UnitPrice
FROM Products
ORDER BY UnitPrice DESC
--11. Liệt kê top 5% sản phẩm có đơn giá cao nhất
SELECT TOP 5 PERCENT ProductName, QuantityPerUnit, UnitPrice
FROM Products
ORDER BY UnitPrice DESC
--12. Thống kê chi phí đầu tư của từng sản phẩm
SELECT ProductName, UnitPrice*UnitsInStock AS Chi_Phi_Dau_Tu
FROM Products
--13. Liệt kê top 10 sản phẩm có chi phí đầu tư cao nhất
SELECT TOP 10 ProductName, ProductName, UnitsInStock ,UnitPrice*UnitsInStock AS Chi_Phi_Dau_Tu
FROM Products
ORDER BY Chi_Phi_Dau_Tu DESC
--14. Liệt kê top 10% sản phẩm có chi phí đầu tư thấp nhất
SELECT TOP 10 PERCENT ProductName, ProductName, UnitsInStock, UnitPrice*UnitsInStock AS Chi_Phi_Dau_Tu
FROM Products
ORDER BY Chi_Phi_Dau_Tu ASC
--15. Sản phẩm đặt hàng nhiều nhất
SELECT *
FROM Products 
WHERE UnitsOnOrder = (SELECT MAX(UnitsOnOrder)FROM Products)

SELECT TOP 1 *
FROM Products
ORDER BY UnitsOnOrder DESC
--16. Sản phẩm mua lại nhiều nhất
SELECT MAX(ReorderLevel) AS MAX_Reorder
FROM Products
--17. Thông tin những đơn hàng chuyển đến France
SELECT *
FROM Orders
WHERE ShipCountry = 'France'
--18. Thông tin những khách hàng ở Mexico
SELECT *
FROM Customers
WHERE Country = 'Mexico'
--19. Thông tin những nhân viên lớn hơn 30 năm kinh nghiệm
--19.1: Số năm đi làm của từng nv
SELECT *, YEAR(GETDATE()) - YEAR(HireDate) AS So_Nam_Kinh_Nghiem
FROM Employees
--Thong tin nhan vien
SELECT LastName+ ' '+FirstName AS HO_VA_TEN,
       YEAR(GETDATE()) - YEAR(HireDate) AS So_Nam_Kinh_Nghiem
FROM Employees
WHERE YEAR(GETDATE()) - YEAR(HireDate) > 30
--20. Đưa ra thông tin những sản phẩm có đơn giá >10
SELECT *
FROM Products
WHERE UnitPrice > 10
--21. Thông tin những sản phẩm có chi phí đầu tư lớn hơn >1000
SELECT *, UnitPrice*UnitsInStock AS Chi_Phi_Dau_Tu
FROM Products
WHERE UnitPrice*UnitsInStock > 1000
--22. Thông tin những sản phẩm khách hàng đã đặt đã hết hàng trong kho
SELECT *
FROM Products
WHERE UnitsOnOrder >0 AND UnitsInStock <= 0
--23. Thông tin khách hàng có liên hệ với cấp quản lý
SELECT *
FROM Customers
WHERE ContactTitle LIKE N'%manager%'
--24. Liệt kê những đơn hàng đã đặt trong tháng 6 năm 1996
SELECT *
FROM Orders
WHERE YEAR(OrderDate) = 1996 AND MONTH(OrderDate) = 7 
--25.Liệt kê những đơn hàng có thời gian giao hàng >7 ngày
SELECT *, ShippedDate - OrderDate AS SO_Ngay_giao_hang
FROM Orders
WHERE ShippedDate - OrderDate > 7 
--26. Thông tin những sản phẩm được đóng gói dạng chai và dạng hộp
SELECT *
FROM Products
WHERE QuantityPerUnit LIKE '%BOTTLES' OR QuantityPerUnit LIKE '%BOXES'
--27. Thông tin những sản phẩm có tổng số lượng đặt hàng các loại từ 50 đến 100
SELECT *, UnitsOnOrder + ReorderLevel AS Tong_SO
FROM Products
WHERE UnitsOnOrder + ReorderLevel BETWEEN 50 AND 100


/*Thống kê tổng hợp*/
--28. Thống kê tổng số khách hàng tiềm năng và khách hàng đã mua hàng của công ty
--28.1 Khách hàng tiềm năng
SELECT COUNT(CustomerID) AS Tong_khach_hang_tiem_nang
FROM Customers
--28.2 Khách hàng mua hàng
SELECT DISTINCT CustomerID /*tránh trùng*/
FROM Orders
SELECT COUNT(DISTINCT CustomerID) AS Tong_khach_hang_tiem_nang
FROM Orders
--29. Thống kê tổng số đơn hàng, số sản phẩm và số mặt hang sản phẩm đã được bán
--29.1. Tông số hàng
SELECT COUNT(OrderID) AS So_don_hang
FROM Orders
--29.2: Số sản phẩm mặt hàng
SELECT COUNT(ProductID) AS So_mat_hang
FROM Products
--29.3: Số mặt hàng đã được bán
SELECT COUNT(DISTINCT ProductID) AS So_mat_hang_da_ban
FROM [Order Details]
--30: Mặt hàng được giảm giá >10%
SELECT COUNT(DISTINCT ProductID) AS SO_MAT_HANG_DA_BAN
FROM [Order Details]
WHERE Discount >0.1
--31. Mức giá bán trung bình / 1 sản phẩm của doanh nghiệp
SELECT AVG(UnitPrice) AS Gia_Trung_Binh
FROM Products
--32. Thời gian vận chuyển trung bình của 1 đơn hàng
SELECT AVG(DAY(ShippedDate-OrderDate)) AS Thoi_gian_trung_binh
FROM Orders
--33. Số lượng sản phẩm trung bình trong mỗi đơn hàng
SELECT AVG(Quantity) AS So_san_pjham_tb
FROM [Order Details]
--34. Tổng số lượng sản phẩm đã bán được
SELECT SUM(Quantity) AS Tong_so_sp
FROM [Order Details]
--35. Số lượng sản phẩm bán được cao nhất
SELECT MAX(Quantity) AS So_lương_sp_ban_max
FROM [Order Details]
--36. Số lượng sản phẩm bán được thấp nhất
SELECT MIN(Quantity) AS So_lương_sp_ban_max
FROM [Order Details]
--37. Tổng doanh thu toàn công ty
SELECT SUM(UnitPrice*Quantity) AS Tong_doanh_thu
FROM [Order Details]
--38. Tổng doanh thu, doanh thu trung bình và số lượng đơn hàng
SELECT SUM(UnitPrice*Quantity) AS Tong_doanh_thu,
       AVG(UnitPrice*Quantity) AS Doanh_thu_TB,
	   COUNT(DISTINCT OrderID) AS So_Luong_don_hang
FROM [Order Details]
--39. Tổng doanh thu, doanh thu trung bình và số lượng đơn hàng của những đơn hàng giảm giá >10%
SELECT SUM(UnitPrice*Quantity) AS Tong_doanh_thu,
       AVG(UnitPrice*Quantity) AS Doanh_thu_TB,
	   COUNT(DISTINCT OrderID) AS So_Luong_don_hang
FROM [Order Details]
WHERE Discount >0.1


SELECT GETDATE();

SELECT GETDATE() AS [Getdate],
	   CURRENT_TIMESTAMP AS [Current Timestamp],
	   SYSDATETIME() AS [Sysdatetime]
GO

Thuc hanh
--1. Chạy csdl
use Northwind
--2. Hiển thị dữ liệu các bảng có trong csdl
SELECT *
FROM Categories

SELECT *
FROM CustomerCustomerDemo

SELECT *
FROM CustomerDemographics

SELECT *
FROM Customers

SELECT *
FROM Employees

SELECT *
FROM EmployeeTerritories

SELECT *
FROM [Order Details]

SELECT *
FROM Orders

SELECT *
FROM Products

SELECT *
FROM Region

SELECT *
FROM Shippers

SELECT *
FROM Suppliers

SELECT *
FROM Territories
--3. Hiển thị thông tin lastname của bảng nhân viên
SELECT LastName
FROM Employees
--4. Hiển thị tên, họ và chức danh từng nhân viên
SELECT FirstName,LastName, Title
FROM Employees
--5.Hiển thị toàn bộ thông tin nhân viên theo mặc định và theo thứ tự tùy chỉnh
SELECT *
FROM Employees

--5.1 country
SELECT *
FROM Employees
ORDER BY Country ASC
--5.2 city
SELECT *
FROM Employees
ORDER BY City ASC
--6.Truy vấn dữ liệu kết quả công thức 2*3
SELECT 2*3 AS KET_QUA
--7. Truy vấn thông tin ngày giờ hiện tại
SELECT GETDATE() AS Ngay_gio_hien_tai
--8.Truy vấn họ và tên bạn
SELECT 'LÃ MINH TOÀN' AS HO_TEN
--9. Tạo cột họ và tên cho bảng nhân viên
SELECT FirstName+ ' '+LastName AS Fullname
FROM Employees
--10. Truy vấn thông tin khách hàng sắp xếp theo họ từ a-z và ngược lại
SELECT *
FROM Customers
ORDER BY ContactName ASC
--11.Truy vấn thông tin khách hàng sắp xếp theo họ từ z-a
SELECT *
FROM Customers
ORDER BY ContactName DESC
--12. Truy vấn chi tiết đơn hàng và sắp xếp theo cột tổng thành tiền = số lượng* đơn giá từ cao xuống thâp
SELECT *, UnitPrice*Quantity AS Thanh_tien
FROM [Order Details]
ORDER BY Thanh_tien DESC
--13.Đặt tên cột thành tiền trong truy vấn 13 là Tổng số
SELECT *, UnitPrice*Quantity AS [Tổng số]
FROM [Order Details]
ORDER BY [Tổng số] DESC
--15.Truy vấn nhân viên sắp xếp theo cột reportTo
SELECT *
FROM Employees
ORDER BY ReportsTo ASC
Leave a Comment