SQL 按行计数模进行分组

2024-04-30

我有以下示例数据:

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 来完成此任务,有什么建议吗?


我会定义一个包含序列号的表,例如1 to 1000并加入该表(除非您的数据库支持在查询中生成这些数字,例如 Oracle 使用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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL 按行计数模进行分组 的相关文章

  • 如何按 pandas 中的值对系列进行分组?

    我现在有一只熊猫Series与数据类型Timestamp 我想按日期对其进行分组 并且每组中有许多行具有不同的时间 看似显而易见的方法类似于 grouped s groupby lambda x x date 然而 熊猫的groupby按索
  • 需要在 SQL Server 中透视字符串值

    我有一个包含值的表 描述为 Occupation String Name String Developer A Developer B Designer X Coder Y Coder Z 我需要数据透视格式的值 Designer Deve
  • 如何使用 SQL Server 2008 执行多个 CASE WHEN 条件?

    我想做的是对同一列使用多个 CASE WHEN 条件 这是我的查询代码 SELECT Url p ArtNo p Description p Specification CASE WHEN 1 1 or 1 1 THEN 1 ELSE 0
  • 消息 203,级别 16,状态 2,不是有效标识符

    我收到以下错误 消息 203 级别 16 状态 2 过程 getQuestion 第 18 行名称 select top 1 from tlb Question inner join tlb options on tlb options q
  • 如何对 SQL 进行多次查询

    我正在尝试创建一个表 并在 PHP 脚本的帮助下在数据库中插入一些值 虽然只插入 1 行 但效果很好 当我尝试输入更多行数时 出现错误 我需要为每个查询编写完整的插入语句 因为我正在使用在线 Excel 到 SQL 查询转换器
  • 如何在 SQL Server 2012 中选择除一列之外的所有列? [复制]

    这个问题在这里已经有答案了 有没有一种方法可以选择所有列 但只选择我不想选择的特定列 我的意思是有时我会遇到这样的问题 表有数百个字段 而我只需要删除一个字段 我需要重写所有列吗 有什么窍门吗 喜欢select
  • 在 Yii 的标准中如何获得计数 (*)

    我正在尝试构建一个具有以下内容的查询group by属性 我正在尝试得到id和count它一直告诉我count is invalid列名 我怎样才能得到count来自group by询问 工作有别名 伊伊 1 1 11 其他不及格 crit
  • 默认情况下在sql日期时间列中插入null/空值

    如何在 SQL Server 中创建一个表 默认日期时间为空 而不是1900 01 01 00 00 00 000我得到了 我的意思是 如果没有插入值 则默认值应该为 null 空等 如果没有插入值 默认值应该是null empty 在表定
  • Oracle SQL PLS-00049:错误的绑定变量

    我收到此错误 这似乎是列拼写问题 然而 我 99 确信我拼写的所有内容都是正确的 但我看不出有任何理由会出现我所犯的错误 这是来源 CREATE OR REPLACE TRIGGER update qoh trigger AFTER INS
  • CONTAINS 不适用于 Oracle Text

    我在执行此查询时遇到问题 SELECT FROM gob attachment WHERE CONTAINS gob a document java gt 0 它给了我 ORA 29902 error in executing ODCIIn
  • 就SQL注入而言,哪种sql查询更安全

    我有两个 SQL 查询正在尝试更新sup and opp每次调用查询时 值分别为 1 和 1 第一个查询 query update disc set sup sup opp opp where did did int sup getnoof
  • 将用户定义的表类型从 VBA 传递到 SQL

    我的任务是创建一个 Excel 电子表格作为 SQL 数据库的前端 以及一些对数据执行复杂计算的 C 我的老板想要前端作为电子表格 而计算对于 VBA 来说似乎太复杂了 目前 检索数据集的存储过程运行良好 然后 用户将在 Excel 中编辑
  • 限制分页页数

    objConnect mysql connect localhost root or die mysql error objDB mysql select db Test strSQL SELECT FROM UserAddedRecord
  • 插入多行而不重复语句的“INSERT INTO ...”部分?

    我知道我几年前就已经这样做过 但我不记得语法了 而且由于提取了大量有关 批量导入 的帮助文档和文章 我在任何地方都找不到它 这就是我想做的 但语法不完全正确 请以前做过此操作的人帮助我 INSERT INTO dbo MyTable ID
  • Pandas:GroupBy 到 DataFrame

    参考这个关于 groupby 到 dataframe 的非常流行的问题 https stackoverflow com questions 10373660 converting a pandas groupby object to dat
  • 使用 SQL 完全复制 postgres 表

    免责声明 这个问题和栈溢出问题类似here https stackoverflow com questions 198141 copy a table including indexes in postgres 但这些答案都不适用于我的问题
  • 无法批量加载。操作系统错误代码 5(访问被拒绝。)

    由于某些奇怪的原因 我在执行批量插入时遇到问题 BULK INSERT customer stg FROM C Users Michael workspace pydb data andrew out txt WITH FIRSTROW 0
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 使用“AND”表达式构建动态 SQL,而不混淆嵌套条件?

    总的来说 我对 php 和编码相当陌生 我有一系列条件需要测试它们是否已设置 它们是 option1 option2 option3 if isset option1 if isset option2 if isset option3 qu
  • Entity Framework 6 多对多想要插入重复行

    不应该这么难 我准备放弃EF了 我的模型有周刊版本 每个版本可以有许多分类广告 每个分类可以出现在一个或多个版本中 我的模型 public class Classifieds Key DatabaseGenerated DatabaseGe

随机推荐