gpt4 book ai didi

sql - 在 SQL 中计算和划分来自多个列的不同值对

转载 作者:行者123 更新时间:2023-11-29 14:36:23 24 4
gpt4 key购买 nike

我是 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com