我有一张桌子t
t:([] x: 1 2 3 4 5; y: 5.1 2.4 3.3 4.5 1.5);
x y
-----
1 5.1
2 2.4
3 3.3
4 4.5
5 1.5
并且我正在尝试重新缩放x
和y
行,t
使得较大的一个变为 1,另一个取ceiling max(x;y)%min(x;y)
如下值:
rescaledUnits:{[t]
t:update l:max(x;y), s:min(x;y) from t;
t:update a:ceiling l%s, ones:1 from t;
t:update uc:ones, up:a where x>=y from t;
t:update uc:a, up:ones where x<y from t;
t
};
但当我调用它时我得到了
show rescaledUnits[t]
q)
'length
t:update a:ceiling l%s, one:1 from t;
t:update uc:one, up:a where x>=y from t;
^
t:update uc:a, up:one where x<y from t;
我该如何修复上述功能?
您的更新语句是错误的
where 子句位于最后。Q-SQL 查询的形式为
select <cols> <by> from T<exp> <where>
您可以在此处阅读相关内容 https://code.kx.com/q4m3/9_Queries_q-sql/很容易看出,其中
x>y
较大的一个是x
(并且将变为1
),max(x;y)
并且x
是。一切都镜像其中:其中较大的一个是(并且将变为1),并且min(x;y)
是。y
x<y
y
max(x;y)
y
min(x;y)
x
因此不需要计算辅助列: