假设有一张表:
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
5 个解决方案
#1
贴记录及要求结果出来看看
#2
楼主,你这个需求,是无法通过一个sql语句搞定的
因为,你的需求是> ,< 而不是简单的等于
因为,你的需求是> ,< 而不是简单的等于
#3
group by 日期的话,将会出现很多个组
所以,这个,要通过三条语句,分别得出,小于今天的,今天的,大于今天的
所以,这个,要通过三条语句,分别得出,小于今天的,今天的,大于今天的
#4
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
#5
谢谢,毫无疑问的满分~\(≧▽≦)/~
#1
贴记录及要求结果出来看看
#2
楼主,你这个需求,是无法通过一个sql语句搞定的
因为,你的需求是> ,< 而不是简单的等于
因为,你的需求是> ,< 而不是简单的等于
#3
group by 日期的话,将会出现很多个组
所以,这个,要通过三条语句,分别得出,小于今天的,今天的,大于今天的
所以,这个,要通过三条语句,分别得出,小于今天的,今天的,大于今天的
#4
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
#5
谢谢,毫无疑问的满分~\(≧▽≦)/~