有一个mysql创建的表doc_order,表有两个字段a和b,都是text类型,表没有主键。字段a和b的值都有重复值,但是表中没有重复的记录,现在想统计以下信息:
(1)针对字段a的每一个取值,相应的记录的个数?
(2)针对字段a的每一个取值,相应的记录个数小于3个的a的取值有多少个?
(3)针对字段b的每一个取值,相应的记录的个数?
(4)针对字段a的每一个取值,相应的记录个数小于3个的b的取值有多少个?

解决方案 »

  1.   

    1
    select a,count(*) from doc_order group by a
    2
    select count(*) from (
    select a from doc_order group by a having count(*)<=3) d
    3
    select b,count(*) from doc_order group by b
    4
    select count(*) from (
    select b from doc_order group by b having count(*)<=3) d
      

  2.   


    (1)针对字段a的每一个取值,相应的记录的个数?
        select a,count(*) from doc_order group by a
    (2)针对字段a的每一个取值,相应的记录个数小于3个的a的取值有多少个?
        select count(*) from (
        select a from doc_order group by a having count(*)<=3) d
    (3)针对字段b的每一个取值,相应的记录的个数?
        select b,count(*) from doc_order group by b
    (4)针对字段a的每一个取值,相应的记录个数小于3个的b的取值有多少个?
        select count(*) from (
        select b from doc_order group by b having count(*)<=3) d
      

  3.   

    有一个mysql创建的表doc_order,表有两个字段a和b,都是text类型,表没有主键。字段a和b的值都有重复值,但是表中没有重复的记录,现在想统计以下信息:
    (1)针对字段a的每一个取值,相应的记录的个数?
    select count(distinct a) from doc_order
    (2)针对字段a的每一个取值,相应的记录个数小于3个的a的取值有多少个?
    select count(*) from (select a n from doc_order group by a having count(*)<3) tb(3)针对字段b的每一个取值,相应的记录的个数?
    select count(distinct b) from doc_order
    (4)针对字段a的每一个取值,相应的记录个数小于3个的b的取值有多少个?select count(*) from doc_order where a in (select a n from doc_order group by a having count(*)<3)
      

  4.   

    非常感谢wwwwb!
    也感谢其他二位的热情解回答!