我使用的是mysql数据库假设有一张表:
q_id a_id start_date end_date其中,a_id是外键。一个q_id对应多个a_id我想按a_id分组如果想得到每个a_id有对应一共有多少个q_id,查询语句是
select a.a_id, count(q.q_id)
FROM test
group by a.aid现在我想查询以a_id分组,a_id相同的q_id一共有几个,start_date大于今天的有几个, end_date小于今天的有几个,start_date中间end_date包括今天的有几个请问这种分组怎么查啊囧ps:神啊我真讨厌做统计5555555555555555555555

解决方案 »

  1.   

    楼主,你这个需求,是无法通过一个sql语句搞定的
    因为,你的需求是> ,< 而不是简单的等于
      

  2.   

    group by 日期的话,将会出现很多个组所以,这个,要通过三条语句,分别得出,小于今天的,今天的,大于今天的
      

  3.   

    select a_id,
    count(q_id) as a_id相同的q_id一共有几个,
    sum(start_date>curdate()) as start_date大于今天的有几个,
    sum(end_date<curdate()) as end_date小于今天的有几个,
    sum(curdate() between start_date and end_date) as start_date中间end_date包括今天的有几个
    from 假设有一张表
    group by a_id