PROD_NAME DISTRICT DATE SALES

Một phần của tài liệu Hướng dẫn SQL & XQuery cho IBM DB2, Phần 5: So sánh dữ liệu pptx (Trang 38 - 40)

Lotta Latte Chicago Jun 7, 2005 76.50

Lotta Latte Chicago Jun 10, 2005 59.50

Lotta Latte Chicago Jun 16, 2005 42.50

Lotta Latte Chicago Jun 17, 2005 76.50

Lotta Latte Chicago Jun 29, 2005 110.50

Về truy vấn

Truy vấn này trả về các số doanh thu Lotta Latte tại các cửa hàng ở hạt Chicago trong năm 2005 cho những ngày có doanh thu thấp hơn số doanh thu trung bình hàng ngày của Lotta Latte trong cùng thành phố trong năm 2004.

Truy vấn phụ trong ví dụ này là vô hướng – nó tạo ra một giá trị. Sau khi truy vấn phụ đã tính toán số đôla trung bình cho mỗi ngày ở Chicago trong năm 2004, giá trị trung bình này được sử dụng như một ràng buộc trên tất cả các hàng được truy vấn chính trả về. Chỉ các số nào trong năm 2005 thấp hơn so với trung bình năm 2004 mới được hiển thị trong tập kết quả; số trung bình tự nó không thể được hiển thị trừ khi truy vấn phụ được di chuyển vào trong danh sách lựa chọn hay mệnh đề FROM.

Các lưu ý về cách dùng

Thứ tự lôgíc của việc xử lý truy vấn bắt buộc rằng những ràng buộc của mệnh đề WHERE được máy chủ áp dụng ngay lập tức sau khi các bảng trong mệnh đề FROM đã được nối và trước bất kỳ sự tính toán nào với các hàm tập hợp như AVG và SUM, vân vân. Vì thế, bạn không thể sử dụng một trong số các hàm đó trong một điều kiện tìm kiếm đơn giản trong mệnh đề WHERE.

Sử dụng các thuộc tính so sánh

Sản phẩm nào đã ghi nhận có tổng doanh thu hàng ngày cao nhất ở Hartford, Connecticut, trong tháng Giêng 2006?

Ví dụ truy vấn

SELECT prod_name, date, dollars FROM aroma.store a,

aroma.sales b, aroma.product c, aroma.period d

WHERE a.storekey = b.storekey AND c.prodkey = b.prodkey AND c.classkey = b.classkey AND d.perkey = b.perkey AND year = 2006

AND city = 'Hartford' AND month = 'JAN' AND dollars >= ALL (SELECT dollars

FROM aroma.product a, aroma.sales b,

aroma.period c, aroma.store d

AND a.classkey = b.classkey AND c.perkey = b.perkey AND d.storekey = b.storekey AND year = 2006

AND city = 'Hartford' AND month = 'JAN');

Kết quả

Một phần của tài liệu Hướng dẫn SQL & XQuery cho IBM DB2, Phần 5: So sánh dữ liệu pptx (Trang 38 - 40)