-2

私は以下のようなテーブルを持っています

carrier   duration   date
a         10         05-09-2013 
a         0          04-09-2013 
b         1          05-09-2013 
b         3          04-09-2013  
c         2          05-09-2013 
c         3          04-09-2013

キャリアと合計期間に基づいて平均を計算したい

結果は次のようになります。

carrier a = avg is 10
carrier b = avg is 2
carrier c = ave is 2.5

ゼロ以外の値の合計期間のみを計算する必要があります。キャリア A については、2013 年 4 月 9 日の日付にアクティビティがなかったため、平均は 10/1 になるはずです。つまり、合計期間/ゼロ以外の期間の日付の数)

4

3 に答える 3

1
select                  
  carrier,           -- carrier column in result set
  avg(duration)      -- average duration column in result set
from tablename       -- specify what table to get results from
where duration>0     -- condition excluding table rows where duration=0
group by carrier;    -- All rows with the same 'carrier' value are grouped 
                     -- together into one row in the result set. This works with 
                     -- the aggregate function avg();
于 2013-09-16T09:05:14.250 に答える
0
select carrier, avg(duration) 
from mytable
where duration > 0
group by carrier
于 2013-09-16T08:54:52.133 に答える
0
select carrier,AVG(duration) as average_duration
from tablename
where duration != 0
group by carrier
于 2013-09-16T08:58:01.637 に答える