当前位置: 首页 > 面试题库 >

SQL查询,用于根据序列对结果进行分组

邹学民
2023-03-14
问题内容

我有一个这样的表:

ID  Seq  Amt
1   1    500
1   2    500
1   3    500
1   5    500
2   10   600
2   11   600
3   1    700
3   3    700

我想将连续序列号分组为一行,如下所示:

ID  Start  End  TotalAmt
1   1      3    1500
1   5      5    500
2   10     11   1200
3   1      1    700
3   3      3    700

请帮助实现此结果。


问题答案:
WITH numbered AS (
  SELECT
    ID, Seq, Amt,
    SeqGroup = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Seq) - Seq
  FROM atable
)
SELECT
  ID,
  Start = MIN(Seq),
  [End] = MAX(Seq),
  TotalAmt = SUM(Amt)
FROM numbered
GROUP BY ID, SeqGroup
ORDER BY ID, Start
;


 类似资料:
  • 有如下两张表: 1、区域表 2、数量表 根据区域统计数量表获取每个区的数量 获得结果如下: count name 28 A区 18 B区 19 C区 26 D区 问题:现在需要将A和B区的数据合并起来算作A区的数据 期望的是: count name 46 A区+B区 19 C区 26 D区 SQL应该如何调整

  • 问题内容: 如何将查询结果放入未创建的表中? 例如,将以下查询结果放入未创建的新表中。创建表并将结果放在同一时间。 如何才能做到这一点? 问题答案: 您没有指定RDBMS系统,但是在SQL Server中会像这样

  • 问题内容: 我有一个示例页面,该页面使用2个PHP文件和一个MySql数据库,并且我正在尝试在其上使用jQuery无限滚动。如何从数据库加载下一组数据?例如,我的图片数据库中有100条记录,我想显示20条,然后在滚动后显示下20条。 这是我目前的核心: index.php images.html 问题答案: 您需要添加到查询中。MySQL手册中的示例: 在这里,是起始偏移量,是您要获取的行数。 对

  • 全部的 我一直在尝试这样做,数据结构如下: 要获得以下内容: 基本上,按升序排列字母字段,按降序排列数字字段,并通过使用按字母字段分组的数字字段的顺序来获得顺序或排名。 仅当我将其限制为字母列中的一个特定值时,我才实现了它,方法如下: 但我不知道如何得到上面显示的结果。知道吗?还有,有没有其他方法也适用于mysql/mssql/etc? 谢谢

  • 问题内容: 我在Postgres服务器上有以下数据库表: 我想创建一个查询,给出了的按月份和年份如下列并对结果进行分组: 有没有简单的方法可以做到这一点? 问题答案: 应Radu的要求,我将解释该查询: :将“日期”属性转换为月的简短形式的定义格式。 :Postgresql的“提取”功能用于从“日期”属性中提取YYYY年。 :SUM()函数将所有“ Sales”值相加,并提供区分大小写的别名,并使

  • 问题内容: 我正在使用Oracle SQL,并且想对一些“喜欢”函数结果的不同行进行分组。举例说明: 假设我有一个表MESA,其中的一列是一个巨大的字符串。 我正在计算与特定模式匹配的行数: 因此,假设此查询的结果为: 水果..afsafafasfa … RED_APPLE 20 水果..afsafafasfa … YELLOW_APPLE 12 水果..afsafafasfa … GREEN_A