gpt4 book ai didi

SQL Group by Modulo of Row Count

转载 作者:行者123 更新时间:2023-12-04 14:25:01 24 4
gpt4 key购买 nike

我有以下示例数据:

Id     Name     Quantity
1 Red 1
2 Red 3
3 Blue 1
4 Red 1
5 Yellow 3

因此,对于此示例,总共有 5 个红色、1 个蓝色和 3 个黄色。我正在寻找一种按颜色对它们进行分组的方法,但每组最多有 2 个项目(排序并不重要)。像这样:
Name     QuantityInPackage
Red 2
Red 2
Red 1
Blue 1
Yellow 2
Yellow 1

关于如何在 MS-SQL 2005 上使用 T-SQL 完成此操作的任何建议?

最佳答案

我会定义一个包含序列号的表,比如 11000并加入该表(除非您的数据库支持使用 CONNECT BY 在像 Oracle 一样的查询中生成这些数字):

表号

n
1
2
3
...

我使用 Oracle 尝试了以下查询(也应该与 TSQL 一起使用):
With summed_colors As (
Select name, Sum(quantity) quantity
From colors
Group By name
)
Select
name,
Case When n*2-1 = quantity Then 1 Else 2 End quantityInPackage
From summed_colors
Join nums On ( n*2-1 <= quantity )
Order By name, quantityInPackage Desc

它返回
Blue   1
Red 2
Red 2
Red 1
Yellow 2
Yellow 1

关于SQL Group by Modulo of Row Count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2561585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com