微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL按行计数的模数分组

如何解决SQL按行计数的模数分组

我会定义一个表包含序列号,说11000和加入该表(除非你的数据库支持生成甲骨文使用类似查询这些号码CONNECT BY):

表号

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

解决方法

我有以下示例数据:

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完成此操作的任何建议?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。