簡體   English   中英

如何使用COUNT,SUM,CASE和BETWEEN將此SQL查詢轉換為Perl DBIx :: Class?

[英]How can I convert this SQL query using COUNT, SUM, CASE, and BETWEEN into Perl DBIx::Class?

如何將該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();

當然,日期時間位將取決於您的日期時間格式,是否自動膨脹/縮小日期時間等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM