2016-11-12 32 views
0

從ANSI-92 SQL或Impala SQL標準中的樣例記錄中,我無法在幾分鐘內從下載的平均下載量。用SQL計算在幾分鐘內的平均下載量

  • LOGIN_ID,starttimestamp,stoptimestamp,download_bytes
  • [email protected],2015年12月31日23時59分五十零秒,2016年1月1日00:00:20 ,438.0
  • [email protected],2016年1月1日0時00分28秒,2016年1月1日0點01分13秒,2190.0
  • [email protected],2016年1月1日0時01分21秒,2016年1月1日0點01分54秒,876.0
  • [email protected],2016年1月1日0時01分59秒,2016年1月1日0時02分34秒,1168.0
  • [email protected],2016年1月1日00 :02:43,2016年1月1日○點03分34秒,1179.0

的時間,其爲黑體份額starttimestamp和stoptimestamp時間空間(以分鐘爲單位組)。如何獲得的平均下載在

  • 00:00:00分鐘(00:00:20 - 00:00:28)
  • 00:01:00分鐘(0點01分13秒 - 0點01分21秒)
  • 00:02:00分鐘(零點02分34秒 - 零點02分43秒)

等。

有什麼建議嗎?非常感謝您提前!

問候,

Pozy

回答

1
select 
    (unix_timestamp(stoptimestamp)-unix_timestamp(starttimestamp))/60.0 diff_minutes 
from your_table 

使用UNIX_TIMESTAMP()計算以秒爲單位的差異然後通過取決於你在想結果的精度60或60.0分。

要計算多個行的平均下載量,您需要使用SUM()來聚合字節,並計算時間單位。 你可能想使用秒爲inital計算,然後由60.0

下面的例子是用於SQL Sever的書面劃分,因爲我沒有黑斑羚使用

declare @mytable table 
    ([login_id] varchar(11), [starttimestamp_] datetime, [stoptimestamp_] datetime, [download_bytes] decimal(12,1)) 
; 

INSERT INTO @mytable 
    ([login_id], [starttimestamp_], [stoptimestamp_], [download_bytes]) 
VALUES 
    ('[email protected]', '2015-12-31 23:59:50', '2016-01-01 00:00:20', 438.0), 
    ('[email protected]', '2016-01-01 00:00:28', '2016-01-01 00:01:13', 2190.0), 
    ('[email protected]', '2016-01-01 00:01:21', '2016-01-01 00:01:54', 876.0), 
    ('[email protected]', '2016-01-01 00:01:59', '2016-01-01 00:02:34', 1168.0), 
    ('[email protected]', '2016-01-01 00:02:43', '2016-01-01 00:03:34', 1179.0) 
; 

select 
    sum(download_bytes) sum_bytes 
, sum(datediff(second,starttimestamp_,stoptimestamp_)) sum_time_unit 
, sum(download_bytes)/sum(datediff(second,starttimestamp_,stoptimestamp_)) avg_bytes_sec 
, (sum(download_bytes)/sum(datediff(second,starttimestamp_,stoptimestamp_)))/60.0 avg_bytes_min 
from @mytable 
-- WHERE ... 
-- GROUP BY ... 

+===========+===============+===============+===============+ 
| sum_bytes | sum_time_unit | avg_bytes_sec | avg_bytes_min | 
+===========+===============+===============+===============+ 
| 5851  | 194   | 30.159793  | 0.502663  | 
+-----------+---------------+---------------+---------------+ 

見:http://data.stackexchange.com/stackoverflow/query/576857/sql-to-calculate-average-download-in-minutes

+0

download_bytes怎麼樣?我需要平均他們嗎? – akunyer

+0

增加了更多計算來回答 –