开发者社区> 问答> 正文

如何筛选出具有cat又具有bid的唯一的username,在下面的数据表中?

如题..这里是一个关系表, 想筛选出来唯一的值..
21
如何筛选出来具有cat同时又具有bid的唯一的username

展开
收起
落地花开啦 2016-02-11 14:23:22 1934 0
1 条回答
写回答
取消 提交回答
  • 公益是一辈子的事, I am digoal, just do it. 阿里云数据库团队, 擅长PolarDB, PostgreSQL, DuckDB, ADB等, 长期致力于推动开源数据库技术、生态在中国的发展与开源产业人才培养. 曾荣获阿里巴巴麒麟布道师称号、2018届OSCAR开源尖峰人物.

    如果是PostgreSQL可以使用窗口查询来解决这个问题:

    digoal=# drop table tbl;;
    DROP TABLE
    digoal=# 
    digoal=# create table tbl(username text, store text, item text, value int);
    CREATE TABLE
    digoal=# insert into tbl values ('kaixin','lease','bid',1);
    INSERT 0 1
    digoal=# insert into tbl values ('kaixin','lease','bid',2);
    INSERT 0 1
    digoal=# insert into tbl values ('kaixin','lease','bid',3);
    INSERT 0 1
    digoal=# insert into tbl values ('kaixin','lease','cat',3);
    INSERT 0 1
    digoal=# insert into tbl values ('kaixin','lease','cat',4);
    INSERT 0 1
    digoal=# insert into tbl values ('kaixin','lease','cat',5);
    INSERT 0 1
    digoal=# insert into tbl values ('kaixin123','lease','cat',6);
    INSERT 0 1
    
    digoal=# select * from tbl;
     username  | store | item | value 
    -----------+-------+------+-------
     kaixin    | lease | bid  |     1
     kaixin    | lease | bid  |     2
     kaixin    | lease | bid  |     3
     kaixin    | lease | cat  |     3
     kaixin    | lease | cat  |     4
     kaixin    | lease | cat  |     5
     kaixin123 | lease | cat  |     6
    (7 rows)
    
    digoal=# select distinct username from (select array_agg(item) over(partition by username) arr,username from tbl) t where arr @> array['bid','cat'];
     username 
    ----------
     kaixin
    (1 row)
    2019-07-17 18:40:41
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
对 2000 多亿条数据做一次 group by 需要多久? 立即下载
对2000多亿条数据做一次Group By 需要多久 立即下载
低代码开发师(初级)实战教程 立即下载