建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
(ID INT(10) NOT NULL AUTO_INCREMENT COMMENT '账户ID',
AccountName VARCHAR(100) NOT NULL COMMENT '账户名',
EMail VARCHAR(100) NOT NULL COMMENT '邮箱地址',
PASSWORD VARCHAR(100) NOT NULL COMMENT '账户密码',
Sex INT(10) DEFAULT 0 COMMENT '性别 0--男,1--女',
Address VARCHAR(100) COMMENT '地址',
UserPhoto VARCHAR(100) COMMENT '账户头像',
STATUS INT(10) DEFAULT 0 NOT NULL COMMENT '账户状态 0--激活,1--冻结',
CreateTime DATE NOT NULL COMMENT '创建时间', PRIMARY KEY (ID)) COMMENT='账户表';
统计用户注册量,当没有时间条件或时间条件小于一天时,查询24小时,以小时为单位查询 用户注册量。当时间条件大于一天,统计每一天的用户注册量要得到这样的数据:
第一种情况。无时间条件或时间条件小于一天小时 注册量
0 2
1 3
2 0
3 4
... ...
24 5当时间条件大于一天:选择2014-06-01 到2014-06-05时间 注册量
2014-06-01 a1
2014-06-02 a2
2014-06-03 a3
2014-06-04 a4
2014-06-05 a5
select hour(CreateTime),count(1) from Account group by hour(CreateTime) order by hour(CreateTime);第二种情况:
select date(CreateTime),count(1) from Account where CreateTime>'2014-06-01' and CreateTime<DATE_ADD('2014-06-05',INTERVAL 1 DAY) group by date(CreateTime) order by date(CreateTime);
方法二,在程序中进行控制,把没有记录补充0后显示出来 。
要建两张辅助表?能不能写明白点?谢谢 之前考虑过建个时间表,考虑到查询天数,统计一个月的注册数量又有问题。 不能通过SQL语句来输出想要的结果?
第一个条件数据已解决。
第二个条件,选择大于一天的时间,统计以天为单位,注册用户量。怎么弄?
当时间条件大于一天:如选择2014-06-01 到2014-06-05时间 注册量
2014-06-01 a1
2014-06-02 a2
2014-06-03 a3
2014-06-04 a4
2014-06-05 a5注,月份天数不固定 28,30,31 都有可能。