2016-11-01 58 views
1

我正在尋找在我的輸出底部添加一行,其中包含'duration'列的總數。mysql查詢中單個列的總時間

這裏是我的查詢:

SELECT d.id              AS 'id', 
     d.NAME             AS 'name', 
     a.start_time            AS 'start time', 
     a.end_time            AS 'end time', 
     Time_format(Timediff(a.end_time, a.start_time), '%H:%i') AS 'duration', 
     a.appointment_type          AS 
     'appointment type' 
FROM demographic d 
     INNER JOIN appointment a 
       ON (d.id = a.id) 
WHERE (a.appointment_date BETWEEN 
     '2016-10-30 00:00:00' AND '2016-10-31 23:59:59'); 

這裏是我的輸出:

+------+-------------------+------------+----------+----------+-----------------------+ 
| id | name    | start time | end time | duration | appointment type  | 
+------+-------------------+------------+----------+----------+-----------------------+ 
| 7615 | Ricky Fenson  | 15:45:00 | 16:14:00 | 00:29 | Phone Call   | 
| 3329 | Keith Richards | 11:30:00 | 11:59:00 | 00:29 | Drop In    | 
| 455 | Mick Jagger  | 14:00:00 | 14:29:00 | 00:29 | Drop In    | 
| 2346 | Brian Jones  | 10:00:00 | 10:29:00 | 00:29 | Drop In    | 
| 3332 | Bill Wyman  | 11:00:00 | 11:29:00 | 00:29 | Drop In    | 
+------+-------------------+------------+----------+----------+-----------------------+ 

我想的是:

+------+-------------------+------------+----------+----------+-----------------------+ 
| id | name    | start time | end time | duration | appointment type  | 
+------+-------------------+------------+----------+----------+-----------------------+ 
| 7615 | Ricky Fenson  | 15:45:00 | 16:14:00 | 00:29 | Phone Call   | 
| 3329 | Keith Richards | 11:30:00 | 11:59:00 | 00:29 | Drop In    | 
| 455 | Mick Jagger  | 14:00:00 | 14:29:00 | 00:29 | Drop In    | 
| 2346 | Brian Jones  | 10:00:00 | 10:29:00 | 00:29 | Drop In    | 
| 3332 | Bill Wyman  | 11:00:00 | 11:29:00 | 00:29 | Drop In    | 
|  |     |   |   | 02:25 |      | 
+------+-------------------+------------+----------+----------+-----------------------+ 

的02:25(總持​​續時間)是什麼我在之後。

+0

見http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-我要一個非常簡單的sql查詢 – Strawberry

回答

2

你可以使用union:

(SELECT d.id AS 'id', 
      d.NAME AS 'name', 
      a.start_time AS 'start time', 
      a.end_time AS 'end time', 
      Time_format(Timediff(a.end_time, a.start_time), '%H:%i') AS 'duration', 
      a.appointment_type AS 'appointment type' 
    FROM demographic d 
    INNER JOIN appointment a ON (d.id = a.id) 
    WHERE (a.appointment_date BETWEEN 
      '2016-10-30 00:00:00' AND '2016-10-31 23:59:59') 
    ) 
    union 
    (
    SELECT null AS 'id', 
      null AS 'name', 
      null AS 'start time', 
      null AS 'end time', 
TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(a.end_time,a.start_time)))),'%H:%i') AS 'Duration' 
      null AS 'appointment type' 
    FROM demographic d 
      INNER JOIN appointment a 
        ON (d.id = a.id) 
    WHERE (a.appointment_date BETWEEN 
      '2016-10-30 00:00:00' AND '2016-10-31 23:59:59') 
    ) 
+0

謝謝奧斯卡。這是我認爲正確的方向邁出的一步,然而,增加似乎沒有了。而不是02:25,我得到01:45。 –

+0

嘗試這個''Time_format(Timediff(sum(a.end_time),sum(a.start_time))),'%H:%i')AS'duration''' –

+0

導致錯誤: ERROR 1582 42000):調用本機函數'TIME_FORMAT' –