2017-02-25 38 views
0

我想選擇具有最大取消行程數的列。我知道如何計算使用SQL語句的行程數,但是,當我嘗試使用max函數時,它會給出無效的組函數錯誤。 我的SQL語句如下:enter image description hereSQL無效的組功能

select t.ServiceNumber, t.RouteNumber, remark, 
     max(count(if(Cancelled =1 ,1,null))) as"Total Cancelled Trip" 
from trip t inner join 
    route r 
    on r.ServiceNumber = t.ServiceNumber and 
     r.RouteNumber = t.RouteNumber 
group by t.ServiceNumber, t.RouteNumber,remark; 
+0

如果有很多最大值,我想顯示所有列沒有使用限制共享相同的最大值。可能嗎? –

回答

0

如果你只想要一個行的最大,你可以這樣做:

select t.ServiceNumber, t.RouteNumber, remark, 
     count(*) as "Total Cancelled Trip" 
from trip t inner join 
    route r 
    on r.ServiceNumber = t.ServiceNumber and 
     r.RouteNumber = t.RouteNumber 
where Cancelled = 1 
group by t.ServiceNumber, t.RouteNumber, remark 
order by count(*) desc 
limit 1; 

獲取中關係的情況下,所有這樣的行是棘手的在MySQL 。也許最簡單的方法使用變量:

select tr.* 
from (select t.ServiceNumber, t.RouteNumber, remark, 
      count(*) as "Total Cancelled Trip", 
      (@maxtct = greatest(@maxtct, count(*)) 
     from trip t inner join 
      route r 
      on r.ServiceNumber = t.ServiceNumber and 
       r.RouteNumber = t.RouteNumber cross join 
      (select @maxtct := 0) params 
     where Cancelled = 1 
     group by t.ServiceNumber, t.RouteNumber, remark 
    ) tr 
where `Total Cancelled Trip` = @maxtct; 
+0

謝謝,但我還沒有學會如何在我的課程中使用變量,因爲我是初學者。是否有其他方式顯示相同最大值的其他列? –