Как я могу преобразовать этот SQL -запрос, используя счет, сумму, корпус и между Perl dbix :: class?

StackOverflow https://stackoverflow.com/questions/4738031

  •  12-10-2019
  •  | 
  •  

Вопрос

Как я могу преобразовать этот запрос SQL в Perl Dbix :: class код?

SELECT COUNT(*) AS num_grads,
       SUM(CASE WHEN employment_status = 1 THEN 1 ELSE 0 END) AS num_employed
  FROM students
 WHERE status = 6  -- 6 means they graduated
   AND grad_date BETWEEN Convert(datetime, ?) AND Convert(datetime, ?)
Это было полезно?

Решение

Предполагая, что вы имеете в виду dbix :: class, тогда я бы, вероятно, пойти на что -то вроде:

my $rs = My::Schema->resultset('Students') #
    ->search({
        status => 6,
        grad_date => { 'between' => [ $start_dt, $end_dt ] },
    });

my $num_grads    = $rs->count();
my $num_employed = $rs->search({ employment_status => 1 })->count();

Конечно, бит DateTime будет зависеть от ваших форматов DateTime, независимо от того, автоматически раздуваете/дефляции DateTime и т. Д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top