一个稍复杂的sql,想的有点钻牛角尖了,求帮助!

a312983516 2013-05-27 06:41:13
A表
id,cpid,regTime,actTime

cpid:用户组id
regTime:注册时间
actTime:最后活跃时间

我想查看2013-05-01到2013-05-30号中所有用户组有多少个注册,有多少个活跃

查询结果应如下
cpid regCount actCount
1 200 111
2 245 1
3 244 323

需要考虑的是,如果某条数据注册时间不在范围内,而活跃时间在,或者活跃在范围内,注册不在

还有可能日期不一定1-30每天都有数据,可能中间有断开,那么需要显示0和0.
请指教
...全文
130 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
a312983516 2013-05-28
  • 打赏
  • 举报
回复
引用 3 楼 yumenfeiyu945 的回复:
select cpid, sum(if(regTime >='2013-05-01 00:00:00' and regTime<'2013-05-31 00:00:00',1,0)),sum(if(actTime >='2013-05-01 00:00:00' and actTime <'2013-05-31 00:00:00',1,0)) from A group by cpid 上面的错了
我忘了一个重要的字段 时间字段 显示应该是这样 查询结果应如下 cpid regCount actCount time 1 200 111 2013-05-01 2 245 0 2013-05-02 3 0 32 2013-05-03
a312983516 2013-05-28
  • 打赏
  • 举报
回复
引用 4 楼 ACMAIN_CHM 的回复:
select cpid, sum(if(regTime between '2013-05-01' and '2013-05-30',1,0)) as regCount, sum(if(actTime between '2013-05-01' and '2013-05-30',1,0)) as actCount from A表 group by cpid
我忘了一个重要的字段 时间字段 显示应该是这样 查询结果应如下 cpid regCount actCount time 1 200 111 2013-05-01 2 245 0 2013-05-02 3 0 32 2013-05-03
WWWWA 2013-05-28
  • 打赏
  • 举报
回复
举例说明要求,记录要有代表性
土豆王 2013-05-28
  • 打赏
  • 举报
回复
引用 7 楼 a312983516 的回复:
[quote=引用 3 楼 yumenfeiyu945 的回复:] select cpid, sum(if(regTime >='2013-05-01 00:00:00' and regTime<'2013-05-31 00:00:00',1,0)),sum(if(actTime >='2013-05-01 00:00:00' and actTime <'2013-05-31 00:00:00',1,0)) from A group by cpid 上面的错了
我忘了一个重要的字段 时间字段 显示应该是这样 查询结果应如下 cpid regCount actCount time 1 200 111 2013-05-01 2 245 0 2013-05-02 3 0 32 2013-05-03 [/quote] 4楼已经说的很清楚了啊,如果你加的是时间字段,在select后面在加一个查询结果就可以了。 推荐你看看Mysql子查询,多表查询的一些文档。
ACMAIN_CHM 2013-05-27
  • 打赏
  • 举报
回复
select cpid, sum(if(regTime between '2013-05-01' and '2013-05-30',1,0)) as regCount, sum(if(actTime between '2013-05-01' and '2013-05-30',1,0)) as actCount from A表 group by cpid
yumenfeiyu945 2013-05-27
  • 打赏
  • 举报
回复
select cpid, sum(if(regTime >='2013-05-01 00:00:00' and regTime<'2013-05-31 00:00:00',1,0)),sum(if(actTime >='2013-05-01 00:00:00' and actTime <'2013-05-31 00:00:00',1,0)) from A group by cpid 上面的错了
yumenfeiyu945 2013-05-27
  • 打赏
  • 举报
回复
select cpid, sum(if(regTime >='2013-05-01 00:00:00' and regTime<'2013-05-31 00:00:00'),1,0),sum(if(actTime >='2013-05-01 00:00:00' and actTime <'2013-05-31 00:00:00'),1,0) from A group by cpid
znit2003 2013-05-27
  • 打赏
  • 举报
回复
太难。。。坐等大拿

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧