每天计算/统计MySQL结果总数

5
假设我有一个名为 'signups' 的 MySQL 表,包含以下值:
Name            Signup Date
dog            2008-05-14 18:53:30
cat            2008-05-14 12:13:20
mouse          2008-05-14 08:51:32
giraffe        2008-05-15 22:13:31
Moose          2008-05-16 13:20:30
monkey         2008-05-16 08:51:32
mongoose       2008-05-16 22:13:31
fish           2008-05-16 13:00:30

我希望生成一份报告,记录每天有多少只动物注册(不关心具体时间)。因此,我想要从上面的示例表格中得到以下结果:

Date              Signups
2008-05-14         3
2008-05-15         1
2008-05-16         4

在mysql中是否有办法实现这个功能,或者我需要使用其他语言(如PHP)来计算总数?

欢迎提出任何想法,谢谢。

2个回答

9
SELECT  DATE(Signup_Date) AS `Date`
        , COUNT(*) AS Signups 
FROM    `signups` 
GROUP BY 
        DATE(Signup_Date)

我们将会给您提供您需要的内容。


谢谢,但我想知道您是否可以看一下这个更复杂的问题:http://stackoverflow.com/questions/5476920/mysql-user-signup-counts-between-groups - themerlinproject
这正是我所需要的,只是我需要它包括那些没有添加任何行的日期。您有什么修改建议可以实现这一点吗? - mtindall89

0
drop table if exists users;
create table users
(
user_id int unsigned not null auto_increment primary key,
username varchar(32) unique not null,
created_date datetime not null
)
engine=innodb;

drop table if exists user_signup_summary;
create table user_signup_summary
(
signup_date date not null primary key,
counter int unsigned not null default 0
)
engine=innodb;

delimiter #

create trigger users_before_ins_trig before insert on users
for each row
begin
 insert into user_signup_summary (signup_date, counter) values (new.created_date, 1)
  on duplicate key update counter=counter+1;
end#

delimiter ;

insert into users (username, created_date) values
('f00', now()), ('bar', now()),
('alpha', now() - interval 1 day), ('beta', now() - interval 1 day),
('gamma', now() - interval 2 day);


select * from users;
select * from user_signup_summary;

嗨f00 - 那3k个现有用户怎么办? - themerlinproject
运行一次性查询以生成统计数据。 - Jon Black

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接