2009-12-15 37 views

Trả lời

18

Tôi đoán bạn có ý nghĩa này:

SELECT COUNT(*) FROM products WHERE product_price >= 500 AND product_price <= 1000 

Nhưng bạn không nêu rõ liệu khoảng của bạn đang mở, đóng cửa hoặc khép hờ. Khi sử dụng khoảng thời gian mở hoặc đóng (ở trên là khoảng thời gian đóng) bạn phải cẩn thận không bỏ lỡ hoặc đếm đôi các mục trên ranh giới khi lập bảng cho tất cả các khoảng thời gian.

Tùy thuộc vào những gì bạn đang làm, điều này có thể là tốt hơn cho bạn:

SELECT COUNT(*) FROM products WHERE product_price >= 500 AND product_price < 1000 

Nếu bạn muốn để có được tất cả các khoảng thời gian, bạn có thể làm điều đó trong một tuyên bố quá:

SELECT 
SUM(CASE WHEN product_price < 500 THEN 1 ELSE 0 END) AS price_range_1, 
SUM(CASE WHEN product_price >= 500 AND product_price < 1000 THEN 1 ELSE 0 END) AS price_range_2, 
SUM(CASE WHEN product_price >= 1000 THEN 1 ELSE 0 END) AS price_range_3 
FROM products 

Ngoài ra (và tốt hơn trong quan điểm của tôi), lưu trữ khoảng thời gian của bạn trong một bảng khác và tham gia với nó.

(Nhiều người khác đã chỉ ra các GIỮA từ khóa Trong trường hợp bạn quan tâm, đó là tương đương với phiên bản khoảng thời gian khép kín, tức là phiên bản đầu tiên..)

+0

+1. Giải thích tuyệt vời. – James

3
SELECT COUNT(*) FROM the_table WHERE price BETWEEN 10 AND 20; 
1

Sử dụng BETWEEN:

SELECT count(*) FROM table WHERE price BETWEEN 500 AND 1000 
Các vấn đề liên quan