Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按值范围对某些行进行分组_Sql_Sql Server - Fatal编程技术网

Sql 按值范围对某些行进行分组

Sql 按值范围对某些行进行分组,sql,sql-server,Sql,Sql Server,我正试图按价格范围对某些唱片进行分类。假设客户A多次购买产品B,如下图所示,我想将它们分组。下面的客户购买了不同价位的产品,如800810830850等。我想将每个价位与表中的其他价位进行比较,看看它们是否可以组合在一起 假设有十个价格点 800,800,850,820,830,1200,1220,1200,1250,1230. 我想把10%范围内的数字分组。前5个数字800800850830在一个组中,其他数字在另一个组中。如何实现此SQL Server 如果我理解正确,您需要一组: mi

我正试图按价格范围对某些唱片进行分类。假设客户A多次购买产品B,如下图所示,我想将它们分组。下面的客户购买了不同价位的产品,如800810830850等。我想将每个价位与表中的其他价位进行比较,看看它们是否可以组合在一起

假设有十个价格点

 800,800,850,820,830,1200,1220,1200,1250,1230.
我想把10%范围内的数字分组。前5个数字800800850830在一个组中,其他数字在另一个组中。如何实现此SQL Server


如果我理解正确,您需要一组:

min + 0.1 * (max - min)
将每个客户作为一个组。然后你想让其他人加入另一组。您可以为此使用窗口函数和算法:

select t.*,
       (case when price <= 0.1 * max(price) over (partition by customer) + 0.9 * min(price) over (partition by customer)
             then 1 else 2
        end) as the_group
from t;
选择t.*,

(如果按照问题指南定价,请不要发布代码、数据、错误消息等的图像-将文本复制或键入问题中。请保留图像用于图表或演示渲染错误,以及无法通过文本准确描述的内容。请展示您尝试过的内容,并告诉我们您的想法。)d(在本网站或其他地方)以及为什么它不能满足您的需要。最后,除了示例数据之外,请显示您想要的结果。