sql - MySql:计算价格范围内的行数?

标签 sql mysql

如果我想知道我有多少条目,其中 product_price 在 500-1000 范围内。我该怎么做?

谢谢!

最佳答案

我猜你是这个意思:

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关键字,有兴趣的可以等同于闭区间版本,即第一个版本。)

关于sql - MySql:计算价格范围内的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1910093/

相关文章:

用于对特定时间段内的值求和/总计交易量的 SQL 函数

MySQL:GROUP_CONCAT 中的 DISTINCT 删除相同的值(不是重复的)

MySQL 从属 I/O 线程未运行

MySQL - 将日期范围扩展为单个日期

mysql - 如果我执行 mysql <dbname>> filename.sql 会发生什么

sql - PostgreSQL:按日期分组,也包括前几天的结果

MySQL 查询仅使用文本中的标题大小写检索关键字

mysql - 选择带有 id 1 和 2 标签的项目,但不选择 id 3 或 4 的标签

MySQL 大于 IN

php - MySQL 匹配字符串的所有出现位置