首页 > 解决方案 > SQL 用 ntile 将列值分成相等的组

问题描述

我需要编写 sql 查询,将产品按价格分成 3 个相等的组,(最便宜的产品将在第一组中)。对于每个组,我必须展示它包含的价格范围和平均库存单位。

在此处输入图像描述

我尝试使用 ntile 但我卡住了:

SELECT UnitPrice, NTILE(3) OVER (
    ORDER BY UnitPrice ASC
) AS productGroup, UnitsInStock
FROM Products

标签: sqlsql-servernorthwind

解决方案


您需要在此查询之上放置一个查询。像这样的东西: -

select productGroup, min(UnitPrice), max(UnitPrice), avg(UnitPrice)
from (
  SELECT UnitPrice, NTILE(3) OVER (ORDER BY UnitPrice ASC) AS productGroup
    , UnitsInStock
  FROM Products
) t1
group by productGroup

推荐阅读