我是 SQL 的新手,在寻找可以生成的查询时遇到了问题 最后输出表。
我所拥有的示例表:
ID Color
=============
0 red
0 red
0 blue
1 red
1 yellow
1 yellow
现在通过这个查询我可以生成这个表
SELECT id, color, count(*) as num
from table group by id,color
ID Color num
=======================
0 red 2
0 blue 1
1 red 1
1 yellow 2
通过这个查询,我可以生成这张表
SELECT id, count(*) as num
from table group by id
ID num
============
0 3
1 3
但我希望得到这样的输出。 所以我试图找出一种方法将上述两个查询组合起来 产生这个输出表。
ID Color num
=======================
0 red 0.667 = 2/3
0 blue 0.333 = 1/3
1 red 0.333 = 1/3
1 yellow 0.667 = 2/3
最佳答案
您可以使用 count
窗口函数来划分这些值。
SELECT distinct id, color,
1.0*count(*) over(partition by color,id)/count(*) over(partition by id) as num
from table
关于sql - 在 SQL 中计算和划分来自多个列的不同值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44034540/