Допустим, у меня есть таблица 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, для расчета итогов?
Любые идеи оцениваются, спасибо
SELECT DATE(Signup_Date) AS `Date` , COUNT(*) AS Signups FROM `signups` GROUP BY DATE(Signup_Date)
даст вам именно то, что вам нужно.
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;