Forum Webscript.Ru

Общие => Базы данных => Тема начата: Kwazar от 28 Мая 2004, 10:54:59

Название: Группировка по данным и подсчет количества каждого из повторяющегося значения
Отправлено: Kwazar от 28 Мая 2004, 10:54:59
БД: MySQL.
Выборка будет идти по значениям даты.
Грубо говоря есть таблица с регистрациями людей. При регистрации появляется новая строка с данными по пользователю и датой регистрации.

Как узнать, сколько было регистраций в день в течении месяца (для постоения графики)?

Заранее благодарен.
Название: Группировка по данным и подсчет количества каждого из повторяющегося значения
Отправлено: commander от 28 Мая 2004, 11:13:57
смотря на чем писать приложение... я бы сделал так:
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";
----------------------------------------------------------------------------------
Название: Группировка по данным и подсчет количества каждого из повторяющегося значения
Отправлено: Макс от 28 Мая 2004, 11:25:52
примерно так :
SELECT date, COUNT(*) FROM reg_tab WHERE date BETWEEN $mon_begin AND mon_end GROUP BY date;

только дат в которые не было ни одной регистрации в этом списке не будет