在保留列的同时计算具有相同值的行
Posted
技术标签:
【中文标题】在保留列的同时计算具有相同值的行【英文标题】:Count rows with same value while keeping columns 【发布时间】:2020-02-19 20:15:00 【问题描述】:假设我有以下 sql 表:
id item_count texture_count
30 82 205
30 133 406
35 253 658
30 552 1004
35 234 475
35 119 288
30 104 115
36 594 1422
如何修改我的选择查询以返回我的数据,其中包含一个额外的列,告诉我每个 ID 的出现次数,同时保持原始列的收集?这将导致:
id item_count texture_count id_count
30 82 205 4
30 133 406 4
35 253 658 3
30 552 1004 4
35 234 475 3
35 119 288 3
30 104 115 4
36 594 1422 1
查询是这样的:
SELECT
CAST ((2 * FLOOR(idvalue / 2)) AS INT) as id, -- im creating an id based on this operation, currently id value is a float
item_count,
texture_count
FROM
db
【问题讨论】:
这能回答你的问题吗? Sql query to show count(*) of groups while keeping all rows of the group 请用您正在使用的数据库标记您的问题(您可能还想指定版本,特别是如果您正在运行 mysql,它仅支持最新版本的窗口函数)。 【参考方案1】:如果您的数据库支持,您可以使用窗口函数。你所求的就如窗口一样简单count
:
select
t.*,
count(*) over(partition by id) id_count
from mytable
【讨论】:
以上是关于在保留列的同时计算具有相同值的行的主要内容,如果未能解决你的问题,请参考以下文章