You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在指定价格区间划分20个分组统计products表各区间商品数量

SQL 价格区间分组统计实现方案

首先计算等距区间步长:价格总范围是30000USD - 400USD = 29600USD,分成20个等距区间的话,单个区间的步长为 29600 / 20 = 1480 USD,你也可以根据实际需求自定义步长数值。

方案1:全数据库兼容通用写法

不依赖特定数据库函数,可直接在MySQL、PostgreSQL、SQL Server等所有主流数据库运行:

SELECT
    CONCAT(
        FLOOR((price - 400) / 1480) * 1480 + 400,
        ' - ',
        CASE 
            WHEN FLOOR((price - 400) / 1480) = 19 THEN 30000
            ELSE (FLOOR((price - 400) / 1480) + 1) * 1480 + 400
        END
    ) AS price_range,
    COUNT(*) AS product_count
FROM products
WHERE price BETWEEN 400 AND 30000
GROUP BY price_range
ORDER BY MIN(price);
  • 逻辑说明:通过计算价格对应的区间下标,自动生成区间左右端点,特殊处理最后一个区间的右端点,避免边界值超出最大价格30000USD的问题,最终按区间分组统计商品数量。
  • 输出格式和你给出的示例完全匹配,结果形式为价格区间 = 商品数量。

方案2:支持WIDTH_BUCKET函数的数据库简化写法

如果你使用的是MySQL 8.0+、PostgreSQL等支持内置区间划分函数的数据库,可以用更简洁的写法:

SELECT
    CONCAT(
        (WIDTH_BUCKET(price, 400, 30000, 20) - 1) * 1480 + 400,
        ' - ',
        CASE WHEN WIDTH_BUCKET(price, 400, 30000, 20) = 20 THEN 30000
        ELSE WIDTH_BUCKET(price, 400, 30000, 20) * 1480 + 400
        END
    ) AS price_range,
    COUNT(*) AS product_count
FROM products
WHERE price BETWEEN 400 AND 30000
GROUP BY price_range
ORDER BY price_range;

内容的提问来源于stack exchange,提问作者Abu Sayed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:54:02