sql – 为每个组选择随机行
发布时间:2021-02-23 20:08:48 所属栏目:MsSql教程 来源:网络整理
导读:我有一张这样的桌子 ID ATTRIBUTE 1 A 1 A 1 B 1 C 2 B 2 C 2 C 3 A 3 B 3 C 我想为每个ID选择一个随机属性.结果因此看起来像这样(虽然这只是众多选择之一 ATTRIBUTEBCC 这是我对这个问题的尝试 SELECT "ATTRIBUTE"FROM ( SELECT "ID","ATTRIBUTE",row_number
我有一张这样的桌子 ID ATTRIBUTE 1 A 1 A 1 B 1 C 2 B 2 C 2 C 3 A 3 B 3 C 我想为每个ID选择一个随机属性.结果因此看起来像这样(虽然这只是众多选择之一 ATTRIBUTE B C C 这是我对这个问题的尝试 SELECT "ATTRIBUTE" FROM ( SELECT "ID","ATTRIBUTE",row_number() OVER (PARTITION BY "ID" ORDER BY random()) rownum FROM table ) shuffled WHERE rownum = 1 但是,我不知道这是否是一个很好的解决方案,因为我需要引入行号,这有点麻烦. 你有更好的吗? 解决方法select distinct on (id) id,attribute from like_this order by id,random() 如果您只需要属性列: select distinct on (id) attribute from like_this order by id,random() 请注意,您仍然需要首先按id排序,因为它是distinct的列. 如果您只想要不同的属性: select distinct attribute from ( select distinct on (id) attribute from like_this order by id,random() ) s (编辑:武汉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读