Một số hàm thường dùng
- Hàm round() avg()
- Hàm day() month() year()
- Hàm date() curdate() datediff()
- Hàm format() date_format()
- Hàm length() upper() lower()
- Hàm trim() left() right()
- Hàm concat()
- Hàm if – case ….. when …. then
Yêu cầu 1:
Cho biết giá trị trung bình của các hoá đơn được làm tròn đến hàng nghìn
Hướng dẫn giải
Cần cái gì? -> Giá trị trung bình của các hoá đơn Từ bảng nào -> CT_HOADON
(77) Cách hiển thị -> Giá trị được làm tròn đến hàng nghìn Select round(avg(So_luong * Don_gia), -3) as Gia_tri_trung_binh From CT_HOADON
Yêu cầu 2:
Liệt kê danh sách các hoá đơn trong tháng 7 năm 2007
Hướng dẫn giải
Cần cái gì? -> Thông tin hoá đơn Từ bảng nào -> HOADON
Điều kiện gì -> Tháng 7 năm 2007
Select * From HOADON Where month(Ngay_hd) = 7 and year(Ngay_hd)=2007
Yêu cầu 3:
Liệt kê danh sách các hãng sữa có tên hãng sữa, địa chỉ, điện thoại, trong đó tên hãng sữa in HOA
Hướng dẫn giải
Cần cái gì? -> Tên hãng sữa, địa chỉ, điện thoại Từ bảng nào -> HANG_SUA
Cách hiển thị -> Tên hãng sữa: in HOA
Select upper(Ten_hang_sua), Dia_chi, Dien_thoai From HANG_SUA
Yêu cầu 4:
Liệt kê danh sách sữa đã bán được trong tháng 8 năm 2007 có tên sữa, trọng lượng, đơn giá; trong đó: trọng lượng có thêm ‘gr’, đơn giá có định dạng tiền tệ và có thêm ‘VNĐ’
Hướng dẫn giải
Cần cái gì? -> Tên sữa, trọng lượng, đơn giá Từ bảng nào -> SUA, HOA_DON, CT_HOADON Điều kiện gì -> Tháng 8/2007
Cách hiển thị -> Trọng lượng có ‘gr’, đơn giá dạng tiền tệ có thêm ‘VNĐ’
Select Ten_sua, concat(Trong_luong, ‘gr’), concat(format(c.Don_gia,0), ‘VNĐ’) From CT_HOADON c inner join HOA_DON h on (c.So_hoa_don = h.So_hoa_don) inner join SUA s on (s.Ma_sua = c.Ma_sua) Where
month(Ngay_hd) = 8 and year(Ngay_hd) = 2007
(78) Liệt kê danh sách sữa có trọng lượng từ 400 gr đến 500 gr; có thêm cột đánh giá như sau: nếu giá sữa nhỏ hơn 100000 VNĐ thì đánh giá là ‘Sữa trung bình’, nếu giá trên 100000 VNĐ thì đánh giá là ‘Sữa giá cao’
Hướng dẫn giải
Cần cái gì? -> Thông tin sữa và đánh giá Từ bảng nào -> SUA
Điều kiện gì -> Trọng lượng 400 gr -> 500 gr
Cột đánh giá như thế nào -> <100000 -> ‘Sữa giá trung bình’; >=100000 - > ‘Sữa giá cao’
Select *, if(Don_gia<100000, ‘Sữa trung bình’, ‘Sữa giá cao’) as danh_gia From SUA Where Trong_luong between 400 and 500
Yêu cầu 6:
Liệt kê danh sách hoá đơn kèm theo ngày được định dạng như sau ‘Thứ <tên thứ Tiếng Việt> ngày … tháng … năm ….’; sắp theo ngày tăng dần
Hướng dẫn giải
Cần cái gì? -> Danh sách hoá đơn và ngày được định dạng Từ bảng nào -> HOADON
Cách hiển thị -> Ngày hoá đơn: sắp xếp tăng
Select *, concat(CASE WEEKDAY(‘Ngay_hd’) when 1 then ‘Thứ Hai’
When 2 then ‘Thứ Ba’
When 3 then ‘Thứ Tư’ When 4 then ‘Thứ Năm’ When 5 then ‘Thứ Sáu’ When 6 then ‘Thứ Bảy’ When 0 then ‘Chủ nhật’ END, date_format(‘Ngay_hd’, ‘ngay %d thang %m năm %y’)) as thu_hoan_chinh From HOADON Order by Ngay_hd
Yêu cầu 7:
Thống kê số khách hàng nam – Số khách hàng nữ và tổng số khách hàng
Hướng dẫn giải
Thống kê cái gì -> Số khách hàng nam, nữ, tổng khách hàng Từ bảng nào -> KHACH_HANG
Select sum(if(‘PHAI’ = 1,1,0)) As Tong_nu, sum(if(‘PHAI’=0,1,0)) As Tong_nam, count(*) as Tong_khach_hang From KHACH_HANG
(79)
Bài 4: Truy vấn có nhóm và thống kê dữ liệu