首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在cassandra中对每个唯一的复合列值应用限制?

如何在cassandra中对每个唯一的复合列值应用限制?
EN

Stack Overflow用户
提问于 2015-10-05 18:02:56
回答 1查看 50关注 0票数 0

我有一个样例表结构,如下所示:

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

EN

回答 1

Stack Overflow用户

发布于 2015-10-06 13:27:51

代码语言:javascript
复制
    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}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32945877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档