我有一个样例表结构,如下所示:
CREATE TABLE testcomposite ( day text, name text, lpt varint, details text, PRIMARY KEY (day, name, lpt) )
我有这样的数据:
cqlsh:KS> select * from testcomposite;
day | name | lpt | details ------+---------+---------+-------- day1 | name1 | 10 | abcdef day1 | name1 | 11 | abcdef day1 | name1 | 21 | abcdef day1 | name2 | 10 | abcdef day1 | name2 | 11 | abcdef
有没有可能通过查询得到这样的结果,其中每一行都包含具有最高lpt值的唯一name字段?
day | name | lpt | details ------+---------+---------+-------- day1 | name1 | 21 | abcdef day1 | name2 | 11 | abcdef
发布于 2015-10-06 13:27:51
CREATE FUNCTION state_group_and_max( state map<text, int>, type text, amount int )
CALLED ON NULL INPUT
RETURNS map<text, int>
LANGUAGE java AS '
Integer count = (Integer) state.get(type); if (count == null) count = amount; else count = Math.max(count, amount); state.put(type, count); return state; ' ;
CREATE OR REPLACE AGGREGATE group_and_max(text, int)
SFUNC state_group_and_max
STYPE map<text, int>
INITCOND {};
cqlsh:test> select group_and_max(name,lpt) from testcomposite where day = 'day1';
test.group_and_max(name, lpt)
-------------------------------
{'name1': 21, 'name2': 11}https://stackoverflow.com/questions/32945877
复制相似问题