我有下表。
Key | Count | Amount
----| ----- | ------
1 | 2 | 10
1 | 2 | 15
2 | 5 | 1
2 | 5 | 2
2 | 5 | 3
2 | 5 | 50
2 | 5 | 20
3 | 3 | 5
3 | 3 | 4
3 | 3 | 5
抱歉,我无法弄清楚是谁制作了上面的表格。
我在SQL Server Management Studio 2012上运行它。
我想要使用金额列的stdevp返回但是如果记录数小于某个值'x'(对于给定的密钥永远不会超过x个记录),那么我想添加零到占余下的。
例如,如果'x'是6:
我只需要能够在计算中添加零。我可以在我的桌子上插入记录,但这似乎相当繁琐。
答案 0 :(得分:0)
这似乎很复杂 - 每个键的填充数据。这是一种方法:
string1 = [x.strip() for x in f.readlines()]
string1 = string1[3:7]
mat = np.empty((0, 6))
for string in string1:
mat = np.vstack([mat, np.matrix(string.strip('[]'))])
这个想法是with xs as (
select 0 as val, 1 as n
union all
select 0, n + 1
from xs
where xs.n < 6
)
select k.key, stdevp(coalesce(t.amount, 0))
from xs cross join
(select distinct key from t) k left join
(select t.*, row_number() over (partition by key order by key) as seqnum
from t
) t
on t.key = k.key and t.seqnum = xs.n
group by k.key;
为每个键生成6行。然后左连接引入可用的行,最多可达。