2014-11-03 38 views
0

我有一個非常基本的表和一個交易列表(在這種情況下,它們是通話詳細報告記錄);查詢頂部條目及其值的列表

CREATE TABLE `cdr_records` (
    `dateTimeOrigination` int(11) DEFAULT NULL, 
    `callingPartyNumber` varchar(50) DEFAULT NULL, 
    `originalCalledPartyNumber` varchar(50) DEFAULT NULL, 
    `finalCalledPartyNumber` varchar(50) DEFAULT NULL, 
    `pkid` varchar(50) NOT NULL DEFAULT '', 
    `duration` int(11) DEFAULT NULL, 
    `destDeviceName` varchar(50) DEFAULT NULL, 
    PRIMARY KEY (`pkid`) 
) 

當我查詢這個表中的事務時,我得到這樣的輸出;

from_unixtime(dateTimeOrigination) | callingPartyNumber | originalCalledPartyNumber | finalCalledPartyNumber | sec_to_time(duration) | 
+------------------------------------+--------------------+---------------------------+------------------------+-----------------------+ 
| 2014-09-26 08:22:11    | 12345   | exampleNumber    | exampleNumber   | 02:49:54    | 
| 2014-09-26 15:06:35    | 67891   | exampleNumber    | exampleNumber   | 02:39:46    | 
| 2014-09-26 17:46:33    | 67891   | exampleNumber    | exampleNumber   | 02:37:13    | 
| 2014-08-21 17:41:30    | 12345   | exampleNumber    | exampleNumber   | 02:23:55    | 
| 2014-08-21 14:43:01    | 12345   | exampleNumber    | exampleNumber   | 02:01:56 

我想寫兩個東西的查詢;

1)告訴我,誰是基於他們的電話 2)什麼的總持續時間是所有特定用戶的通話持續時間的最高用量者是這一時期

怎麼是這樣的接近?如果這是通過DISTINCT查詢完成的,我怎樣才能總結每個條目的持續時間值總數?

回答

1
SELECT callingPartyNumber, sec_to_time(duration_sum) 
FROM 
(
    SELECT callingPartyNumber, sum(duration) as duration_sum 
    FROM cdr_records 
    WHERE dateTimeOrigination 
     BETWEEN UNIX_TIMESTAMP('014-09-26 08:22:11') 
      AND UNIX_TIMESTAMP('2014-08-21 14:43:01') 
    GROUP BY callingPartyNumber 
    ORDER BY duration_sum 
) sub1 
+0

Thansk,David - 這看起來像是有效的。非常感謝幫助。 – Kimomaru 2014-11-03 21:43:57