Автор Тема: Группировка по данным и подсчет количества каждого из повторяющегося значения  (Прочитано 2459 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Kwazar

  • Философ
  • Постоялец
  • ***
  • Сообщений: 201
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.uhuhu.ru/
БД: MySQL.
Выборка будет идти по значениям даты.
Грубо говоря есть таблица с регистрациями людей. При регистрации появляется новая строка с данными по пользователю и датой регистрации.

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

Заранее благодарен.
С уважением Сергей

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
смотря на чем писать приложение... я бы сделал так:
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";
----------------------------------------------------------------------------------
And no religion too...

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
примерно так :
SELECT date, COUNT(*) FROM reg_tab WHERE date BETWEEN $mon_begin AND mon_end GROUP BY date;

только дат в которые не было ни одной регистрации в этом списке не будет
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28