我有带有“ date,sym”列的表。但是每个日期可能有多个符号。我想对每个日期中出现sym的次数进行计数
例如
date sym
-------------------
2019.06.04 ABC
2019.06.04 DEF
2019.06.04 ABC
2019.06.05 DEF
2019.06.05 ABC
会给我
date sym c
-------------------
2019.06.04 ABC 1
2019.06.04 DEF 1
2019.06.04 ABC 2 / here ABC appears for the second time on this date.
2019.06.05 DEF 1
2019.06.05 ABC 1
答案 0 :(得分:5)
这可能更简洁一些,这里的c列只是按日期和符号的每种组合分组的所有行的总和。
q)t:([]date:2019.06.04+0 0 0 1 1;sym:`ABC`DEF`ABC`DEF`ABC)
q)update c:sums i=i by date,sym from t
date sym c
----------------
2019.06.04 ABC 1
2019.06.04 DEF 1
2019.06.04 ABC 2
2019.06.05 DEF 1
2019.06.05 ABC 1
答案 1 :(得分:0)
要按日期对HDB中所有表中出现的syms进行计数,我们可以对每个分区表.Q.pt
进行按日期计数,然后在pj
上进行扫描并加上连接,因为每个表都按日期键(匹配键)。由于pj
与ij
类似,我们需要确保没有删除行,因为每个日期可能缺少不同的符号
q)cntTabs:{2!0!update c:count each sym,sym:first each sym from select sym by date from x} each .Q.pt
q){t:pj[x;y];t,k!y k:key[y] except key[t]}/[cntTabs]