sql - 减少聚合的数据库行

标签 sql sql-server database

我有 table :

+ID+Duration+Cost_change+Def_cost+ | 1| 0.10 | 0.191 | 13.700 | | 2| 0.15 | 0.291 | 21.200 | | 3| 0.14 | 0.043 | 17.500 | | 4| 0.10 | 2.131 | 19.000 | | 5| 0.10 | 3.000 | 11.000 | | 6| 0.19 | 1.100 | 18.500 | | 7| 0.10 | 0.000 | 14.000 | | 8| 0.10 | 0.000 | 13.000 | | 9| 0.18 | 0.000 | 15.000 | |10| 0.10 | 4.100 | 12.000 | |11| 0.14 | 0.000 | 9.800 | |12| 0.10 | 0.000 | 7.000 | +--------+--------+--------+

我有一个额外的列(组),它按 3 行 1、1、1、2、2、2、3、3、3、4、4、4 等对值进行分组。稍后我将不得不按这些组聚合 (SUM,AVG) 值。目标 - 减少 3 倍的行数(不丢失数据)。 将不胜感激任何建议。

期待:

+ID+Duration+Cost_change+Def_cost+Groups | 1| 0.10 | 0.191 | 13.700 | 1个 | 2| 0.15 | 0.291 | 21.200 | 1个 | 3| 0.14 | 0.043 | 17.500 | 1个 | 4| 0.10 | 2.131 | 19.000 | 2个 | 5| 0.10 | 3.000 | 11.000 | 2个 | 6| 0.19 | 1.100 | 18.500 | 2个 | 7| 0.10 | 0.000 | 14.000 | 3个 | 8| 0.10 | 0.000 | 13.000 | 3个 | 9| 0.18 | 0.000 | 15.000 | 3个 |10| 0.10 | 4.100 | 12.000 | 4个 |11| 0.14 | 0.000 | 9.800 | 4个 |12| 0.10 | 0.000 | 7.000 | 4个 +--------+--------+--------+

由 3 个值组成的简单序列。

我正在使用 SQL Server 2012

最佳答案

这对于评论来说有点太长了。

但是,如果你想添加列 groups,你可以这样做:

select 1 + ((id - 1) / 3) as groups

如果 id 值可能有漏洞,请改用 row_number():

select 1 + (row_number() over (order by id) - 1) / 3 as groups

SQL Server 进行整数除法,因此它会按照您指定的方式分配值。

关于sql - 减少聚合的数据库行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32310102/

相关文章:

php - SQL插入语法错误

sql - 如何使用基于另一个选择语句的循环插入表

sql - 用于选择数字最后 6 位数字的存储过程

sql-server - 在仅附加表中设置版本列

javascript - 如何将现有 Dexie 数据库迁移到新的 Dexie 数据库或如何重命名 Dexie 数据库?

mysql - 检查新用户名是否不在两个单独的表中

mysql - 将数据发送到 MySQL 数据库的 Bash 脚本

sql - 什么是 Oracle 中的级别伪列,谁能解释一下?

c# - 避免 SQL 查询、预订应用程序中的重复值

sql - 使用 OR 时忽略 Oracle SQL 索引