我目前已经编写了这样的SQL查询:
SELECT a, b, count(id) / ????
FROM X
group by a, b
请注意上面代码中的 ????? 。
group by
中有两个组。即列a
和b
。
我打算将第二组(b
)中的(1)项数除以(2)计数第一组中的项目(a
)。
count(id)
完成(1)。但我不知道该写些什么(2)。
P.S。:但我知道有可能取代“????”与另一个复杂的选择查询,但我想知道是否有更简单的方法来aggregate
第一组的项目。
更新: 样本数据:
id a b
______________________
1 'A' 'G'
2 'A' 'H'
3 'A' 'H'
4 'B' 'G'
5 'B' 'G'
6 'B' 'K'
7 'B' 'K'
结果:
a b [unnamed]
________________________________
'A' 'G' 0.33333
'A' 'H' 0.66667
'B' 'G' 0.5
'B' 'K' 0.5
第三列是列中b的值相对于列a中的值的列的百分比。
谢谢。
答案 0 :(得分:2)
如果您使用SQL Server
,这可能有效SELECT DISTINCT a, b, (COUNT(*)OVER(PARTITION BY a, b)* 1.0/COUNT(*)OVER(PARTITION BY a)) as unnamed
FROM Sample
答案 1 :(得分:2)
select A.a, B.b, a.num, b.num, CAST(b.num as float) / cast(a.num as float)
from
(select a, count(*) as num
from @table
group by a) as A
join
(select a, b, count(*) as num
from @table
group by a, b) as B on A.a = B.a