加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 如何使用特殊条件进行分组

发布时间:2020-12-12 07:47:27 所属栏目:MsSql教程 来源:网络整理
导读:目前,当我发出这个SQL时,它会获得不同的用户名. 我有一些不同的用户名,代表组,例如GRP_BSN. 我想将所有其他用户名(恰好是数字)分组到一个组中,例如GRP_OTHERS select username,count(*)from hostwhere seq between 0 and 2000group by username;63149 163732
目前,当我发出这个SQL时,它会获得不同的用户名.

我有一些不同的用户名,代表组,例如GRP_BSN.

我想将所有其他用户名(恰好是数字)分组到一个组中,例如GRP_OTHERS

select username,count(*)
from host
where seq between 0 and 2000
group by username;

63149   1
63732   1
64110   2
70987   12
76841   4
GRP_BSN 226
GRP_ASN 243
GRP_DSC 93

我可以实现这样的目标:

GRP_OTHERS 20
GRP_BSN 226
GRP_ASN 243
GRP_DSC 93

编辑:从答案修改查询

select username,count(*)
from host
  where created_dt 
  -- date selection
  between to_date('2012-may-23 00:00:00','yyyy-mon-dd hh24:mi:ss') 
  and to_date('2012-may-23 23:59:59','yyyy-mon-dd hh24:mi:ss')
GROUP BY CASE
             WHEN REGEXP_LIKE(username,'^d+$') THEN 'GRP_OTHERS'
                                                 ELSE username
         END;

解决方法

@bfavaretto很好(1对他),但如果你不知道用户名前缀或他们是不同的,你可以使用类似的东西:
GROUP BY CASE
             WHEN REGEXP_LIKE(username,'^d+$') THEN 'GRP_OTHERS'
                                                 ELSE username
         END

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读