php - Conditional aggregation in SQL with multiple conditions for WHEN -


i'm trying number of printed pages within time horizons (printed today, printed week, printed year, printed month) , have following sql query execute:

$select2 = "select                  if( station_name =  '',  'unknown', station_name ) station_name,                  station_name db_name,                     sum(case when year(print_date) = $year print_pages end) yearpages,                  sum(case when (month(print_date) = $month , year(print_date) = $year) print_pages end) monthpages,                  sum(case when (day(print_date) = $day , year(print_date) = $year , month(print_date) = $month) print_pages end) daypages,                  sum(case when (week(print_date) = $week , year(print_date) = $year , month(print_date) = $month) print_pages end) weekpages             `file_prints`             group station_name;"; 

however, when var dump on 1 of elements in array outputted result of executing query within zend php framework, observe yearpages , monthpages well-defined (a value other null returned) both weekpages , daypages null, seen below:

$rows = $_usertable->getadapter()->fetchall($select2);         var_dump($rows[46]);         print_r(array_keys($rows[46]));    array(6) {      ["station_name"]=> string(15) "uchicagolibrary"      ["db_name"]=> string(15) "uchicagolibrary"      ["yearpages"]=> string(5) "33391"      ["monthpages"]=> string(4) "2498"      ["daypages"]=> null      ["weekpages"]=> null }   array (      [0] => station_name      [1] => db_name      [2] => yearpages      [3] => monthpages      [4] => daypages      [5] => weekpages  

what reason why daypages , weekpages aren't being processed query monthpages , yearpages fine?

as using case statement should keep day,week,month,year in order getting days , week.

     $select2 = "select if( station_name =  '',  'unknown', station_name )                  station_name, station_name db_name, sum(case when       (day(print_date) = $day , year(print_date) = $year ,        month(print_date) = $month) print_pages end) daypages, sum(case      when (week(print_date) = $week , year(print_date) = $year ,       month(print_date) = $month) print_pages end) weekpages,       sum(case when (month(print_date) = $month , year(print_date) = $year)       print_pages end) monthpages,sum(case when year(print_date) =       $year print_pages end) yearpages                 `file_prints`                 group station_name;"; 

Comments