我希望在输出的底部添加一行,其中包含“duration”列的总数。
我的问题是:

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(总时长)是我要找的。

最佳答案

您可以使用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' )
    )

10-06 05:12