我很欣赏这有点奇怪,但我需要这样做,因为下一个数据报告步骤以这种特定格式中继数据。假设我有一张表:
ID | Type | Item
----------------------
1 | red | apple
2 | red | apple
3 | green | apple
4 | red | berry
5 | red | berry
6 | green | banana
7 | yellow | lemon
我现在需要的是在SELECT *查询中添加一个列,它将在每个记录中告诉我在WHOLE查询中有多少条具有相同类型的记录。所以我要找的输出是:
ID | Type | Item | count of type
-------------------------------------
1 | red | apple | 4
2 | red | apple | 4
3 | green | apple | 2
4 | red | berry | 4
5 | red | berry | 4
6 | green | banana | 2
7 | yellow | lemon | 1
我知道我可以做一个子查询,但实际数据要复杂得多(公式和连接遍布各处),每次添加子查询都会使整个查询变得有点混乱。所以只是想知道我是否可以在主查询中“直接”以某种方式对此进行计数?或许你们还有另一个想法。你怎么看。我正在开发dashDB
答案 0 :(得分:2)
您可以使用分区:
select ID, Type, Item, count(ID) over(partition by Type) as CountOfType
From table
答案 1 :(得分:1)
您可以按类型和项目分组来计算每个项目和类型
SELECT t1.ID, t1.Type, t1.Item, t2.CountType
FROM tableName t1
JOIN ( SELECT Type, Item,COUNT(*) As CountType
FROM tableName
GROUP BY Type, Item
) As t2
ON t1.Type = t2.Type AND t1.Item = t2.Item
答案 2 :(得分:1)
您可以使用分析函数,将以下内容添加到SELECT查询Count(*) over (partition by Type) as countOfType