Forum Webscript.Ru
Общие => Базы данных => Тема начата: Kwazar от 28 Мая 2004, 10:54:59
-
БД: MySQL.
Выборка будет идти по значениям даты.
Грубо говоря есть таблица с регистрациями людей. При регистрации появляется новая строка с данными по пользователю и датой регистрации.
Как узнать, сколько было регистраций в день в течении месяца (для постоения графики)?
Заранее благодарен.
-
смотря на чем писать приложение... я бы сделал так:
perl:
--------------------------------------------------------------------------
#!/usr/bin/perl -w
use strict;
use CGI qw(:standard);
use SQLayer;
my $D = SQLayer -> new(database => \'DBI:mysql:database=phorum;host=localhost;port=3306\', user => \'user\', passoword => \'somepass\');
my $now_day=time;
$now_day-=86400;
my ($day,$mon,$year,$wday) = ((localtime($now_day))[3,4,5,6]);
$year+=1900;
$mon+=1;
my $month = $mon;
$day = 31;
if($month==4 || $month==6 || $month==9 || $month==11) {$day=30;}
elsif( $month==2)
{
if($year%4==0){$day=29;}
else {$day=28;}
}
$mon_begin = sprintf("%04d-%02d-%02d", $year, $mon, 1);
$mon_end = sprintf("%04d-%02d-%02d", $year, $mon, $day);
my @users=$D->column("SELECT user_id FROM user WHERE date>=\'$mon_begin\' AND date <=\'$mon_end\'");
my $NUM=scalar(@users);
print "Content-type: text/html\\n\\n";
print "Кол-во человек за текущий месяц: $NUM";
----------------------------------------------------------------------------------
-
примерно так :
SELECT date, COUNT(*) FROM reg_tab WHERE date BETWEEN $mon_begin AND mon_end GROUP BY date;
только дат в которые не было ни одной регистрации в этом списке не будет