группировка по полям без базы данных - PullRequest
0 голосов
/ 29 марта 2011

Как сгруппировать результат запроса по полю, которое не сохранено в базе данных.

Например, я хочу сгруппировать результат по длительности, полученной из вычитания времени начала и времени окончания.

вот как я узнаю продолжительность

date1= $row_TicketRS['CloseDate']; 
$date2 = $row_TicketRS['OpenDate'];

$diff = abs(strtotime($date2) - strtotime($date1)); 

$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));


if ( $days > 0)

{

$time1 = $row_TicketRS['OpenTime'];
$time2= $row_TicketRS['CloseTime'];

$t1=($time1); 
$t2=($time2);

$end=('14:30');
$start=('07:30');

$n = $end- $t1;

$n2 = $t2- $start;

$Hours2 = floor(($n+$n2)+(($days-1)*7));

echo   $Hours2.' Hours'; 

, но знаю, что не знаю, как добавить ее к запросу

вот мой запрос

$strQuery = "SELECT count(`ticket`.TicketID) as TotOutput, department.`DeptName` FROM `ticket`, `user`, department where ticket.OwnerID = user.EmpNo and  user.`DepartmentID` = department.`DepartmentID` and OpenDate between'".$DateFrom."' And '".$DateTo."'"

Ответы [ 3 ]

2 голосов
/ 29 марта 2011

Было бы лучше иметь подробности, но производная таблица / встроенное представление позволит вам группировать по вычисленному значению:

  SELECT x.duration, 
         COUNT(*)
    FROM (SELECT t.col, 
                 t.end_time - t.start_time AS duration
            FROM YOUR_TABLE t) x
GROUP BY x.duration
0 голосов
/ 29 марта 2011

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

exmaple:

SELECT id, FLOOR(value/100)
  FROM tbl_name
  GROUP BY id, FLOOR(value/100);

Ссылка

MySQL разрешает выражения в GROUPBY предложения, поэтому псевдоним не нужен:

0 голосов
/ 29 марта 2011

Как насчет добавления этого вычисленного значения к запросу с псевдонимом, подобным этому:

SELECT some_fields, end - start AS duration FROM table ORDER BY duration
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...