现在有一张表 里面出现的内容如下AAA
AAA
AAA
AAA
BBB
BBB
BBB
BBB
BBB
BBB
BBB
CCC
CCC
DDD
DDD
DDD
DDD
......
这些记录有很多相同的,AAA可以有很多 BBB可以有很多 CCC可以有很多
现在需要求出安装这些记录重复的次数从多到少求一个结果
类似如下结果
AAA 10
BBB 9
CCC 8
DDD 7问题是这些重复的字符串有很多种 我不能一一列出如何写SQL 求指教 谢谢

解决方案 »

  1.   

    select col1, count(col1) from yourtable group by col1 order by 2 desc;
      

  2.   

    用emp表和job字段做个例子:
    SQL> select * from emp;     EMPNO ENAME      JOB              MGR HIREDATE            SAL       COMM     DEPTNO
    ---------- ---------- --------- ---------- ------------ ---------- ---------- ----------
          7369 SMITH      CLERK           7902 17-DEC-80           800                    20
          7499 ALLEN      SALESMAN        7698 20-FEB-81          1600        300         30
          7521 WARD       SALESMAN        7698 22-FEB-81          1250        500         30
          7566 JONES      MANAGER         7839 02-APR-81          2975                    20
          7654 MARTIN     SALESMAN        7698 28-SEP-81          1250       1400         30
          7698 BLAKE      MANAGER         7839 01-MAY-81          2850                    30
          7782 CLARK      MANAGER         7839 09-JUN-81          2450                    10
          7788 SCOTT      ANALYST         7566 19-APR-87          3000                    20
          7839 KING       PRESIDENT            17-NOV-81          5000                    10
          7844 TURNER     SALESMAN        7698 08-SEP-81          1500          1         30
          7876 ADAMS      CLERK           7788 23-MAY-87          1100                    20     EMPNO ENAME      JOB              MGR HIREDATE            SAL       COMM     DEPTNO
    ---------- ---------- --------- ---------- ------------ ---------- ---------- ----------
          7900 JAMES      CLERK           7698 03-DEC-81           950                    30
          7902 FORD       ANALYST         7566 03-DEC-81          3000                    20
          7934 MILLER     CLERK           7782 23-JAN-82          1300                    1014 rows selected.
    SQL> select job, count(job) from emp group by job order by 2 desc ;JOB       COUNT(JOB)
    --------- ----------
    CLERK              4
    SALESMAN           4
    MANAGER            3
    ANALYST            2
    PRESIDENT          1
      

  3.   

    order by 2 desc里面的2是什么意思
      

  4.   

    第2个字段,你也可以写成这样:
    SQL> select job, count(job) from emp group by job order by COUNT(JOB) desc;JOB       COUNT(JOB)
    --------- ----------
    CLERK              4
    SALESMAN           4
    MANAGER            3
    ANALYST            2
    PRESIDENT          1