姓名字段(xm)内容如下: 小明 
小红 
赵大 
赵二 
赵三 
张三 
张四 
张五 
...... 请教能不能写个GROUP by语句把 ‘小’ 开头的,‘赵’ 开头,‘张’ 开头的名字一次GROUP BY 出来.我想要的结果集合是: 
小%  count出总数 
张%  count出总数 
赵%  count出总数 

解决方案 »

  1.   


    GROUP by substr(xm,1,1)
      

  2.   


    select substr(xm,1,1)||'%' 开头,count(1) 总数 GROUP by substr(xm,1,1)
      

  3.   


    GROUP by substr(xm,1,1)也可以。
      

  4.   


    粗心,掉了from table
    select substr(xm,1,1)||'%' 开头,count(1) 总数 from table GROUP by substr(xm,1,1)
      

  5.   


    sun说的不错,需要特别注意自己数据库所设的字符集是哪种!
      

  6.   

    谢谢楼上的各位,改变一下字段内容这样如何取得结果陈小明 
    李小红 
    李王大赵 
    胡二赵 
    李牛三赵 
    李三一张一 
    四一张一 
    五一张二 
    ...... 我想要的结果集合是: 
    %小%  count出总数 
    %赵%  count出总数 
    %张%  count出总数 
      

  7.   

    谢谢楼上的各位,改变一下XM字段内容这样如何取得结果 陈小明 
    李小红 
    李王大赵 
    胡二赵 
    李牛三赵 
    李三一张一 
    四一张一 
    五一张二 
    ...... 我想要的结果集合是: 
    %小%  count出总数 
    %赵%  count出总数 
    %张%  count出总数 
      

  8.   

    select substr(name,1,1) 姓, count(name) 人数 from test1 group by substr(name,1,1) order by substr(name,1,1);
      

  9.   

    我这要做不知道有没有做到,楼主看看是不是这样要求select count(case
                   when a.name like '小%' then
                    a.name
                   else
                    null
                 end) as xiao
          count       
      from table a你依次在把其它的这样做,用个case就能把人数求出来了
      

  10.   

    select count(case 
                  when a.name like '小%' then 
                    a.name 
                  else 
                    null 
                end) as xiao 
          
      from table a 
    上面写错了,不好意思
      

  11.   

    select xm, count(xm)
    from(
      select
        case
          when instr(xm, '小') > 0 then '小'
          when instr(xm, '光') > 0 then '赵'
          when instr(xm, '开') > 0 then '张'
          else null
        end as xm
      from youtable
    )
    group by xm
    having xm is not null;
    如果‘小’、‘赵’、‘张’可能出现在一个字符串里,那就不太好办了。
      

  12.   

    SELECT CASE
             WHEN N LIKE '%小%' THEN
              '%小%'
             WHEN N LIKE '%赵%' THEN
              '%赵%'
             WHEN N LIKE '%张%' THEN
              '%张%'
             ELSE
              'sss'
           END,
           COUNT(1)
      FROM (SELECT '陈小明' N
              FROM DUAL
            UNION ALL
            SELECT '李小红' N
              FROM DUAL
            UNION ALL
            SELECT '李王大赵' N
              FROM DUAL
            UNION ALL
            SELECT '胡二赵' N
              FROM DUAL
            UNION ALL
            SELECT '李牛三赵' N
              FROM DUAL
            UNION ALL
            SELECT '李三一张一' N
              FROM DUAL
            UNION ALL
            SELECT '四一张一' N
              FROM DUAL
            UNION ALL
            SELECT '五一张二' N FROM DUAL)
     GROUP BY CASE
                WHEN N LIKE '%小%' THEN
                 '%小%'
                WHEN N LIKE '%赵%' THEN
                 '%赵%'
                WHEN N LIKE '%张%' THEN
                 '%张%'
                ELSE
                 'sss'
              END
      

  13.   


    这里是substr,不是substrb,所以这里的1是指的字符长度,所以是安装字符集的标准取一个字符。也就没有字符集的问题叻。
      

  14.   

    select * from table group by substr(xm,1,1)