подсчет / подсчет результатов mysql за день - PullRequest
5 голосов
/ 29 марта 2011

Допустим, у меня есть таблица mysql с именем 'signups' со следующими значениями:

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 голосов
/ 29 марта 2011
SELECT  DATE(Signup_Date) AS `Date`
        , COUNT(*) AS Signups 
FROM    `signups` 
GROUP BY 
        DATE(Signup_Date)

даст вам именно то, что вы ищете.

0 голосов
/ 29 марта 2011
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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...