2009-12-15 7 views

Répondre

18

Je devine que vous dire ceci:

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

Mais vous ne spécifiez pas si votre intervalle est ouvert, fermé ou semi-fermé. Lorsque vous utilisez des intervalles ouverts ou fermés (l'intervalle ci-dessus est un intervalle fermé), vous devez faire attention à ne pas manquer ou compter deux fois les éléments sur la limite lors de la tabulation de tous les intervalles.

En fonction de ce que vous faites, cela pourrait être mieux pour vous:

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

Si vous souhaitez obtenir tous les intervalles, vous pouvez le faire dans une déclaration aussi:

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 

Alternativement (et mieux à mon avis), stockez vos plages d'intervalles dans une autre table et joignez-vous à elle.

(Beaucoup d'autres personnes ont fait le mot-clé BETWEEN Dans le cas où vous êtes intéressé, il est équivalent à la version intervalle fermé, à savoir la première version..)

+0

+1. Excellente explication. – James

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

Utilisation BETWEEN:

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