title: How to group by with a special condition
body: <p>Currently when I issue this SQL, it gets the distinct username.</p>
  
  <p>I have some distinct usernames, which represent groups, e.g. <code>GRP_BSN</code>.</p>
  
  <p>I would like to group all the other usernames (which happens to be numeric) into a group e.g. <code>GRP_OTHERS</code></p>
  
  <pre><code>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
  </code></pre>
  
  <p>Can I achieve something like this:</p>
  
  <pre><code>GRP_OTHERS 20
  GRP_BSN 226
  GRP_ASN 243
  GRP_DSC 93
  </code></pre>
  
  <p><strong>EDIT: Modified query from answer</strong></p>
  
  <pre><code>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;
  </code></pre>