2009-12-15 30 views

回答

18

我猜你的意思是這樣的:

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

但是你沒有指定的時間間隔是否打開,關閉或半關閉。當使用打開或關閉時間間隔(以上是關閉時間間隔)時,在列出所有時間間隔時,您必須小心不要錯過或重複計算邊界上的項目。如果你想獲得所有的間隔

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

,你可以做,在一個聲明過:

取決於你在做什麼,這可能是你最好

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 

或者(在我看來更好),將你的間隔範圍存儲在另一個表中並加入。

(其他許多人都指出BETWEEN關鍵字如果你有興趣,這是相當於閉區間的版本,即第一版本。)

+0

+1。優秀的解釋。 – James 2009-12-15 21:49:43

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

使用BETWEEN

SELECT count(*) FROM table WHERE price BETWEEN 500 AND 1000