• That is a nice little query. Here's my quick re-write to show all databases and track percent growth since the first backup on record.

    SELECT

    'database_name' = mdbus.database_name

    ,'backup_start' = mdbus.backup_start_date

    ,'duration' = CASE

    WHEN (datediff([second], mdbus.backup_start_date, mdbus.backup_finish_date) / 60 / 60) >= 100 THEN '100+ hours'

    ELSE isnull(

    right('0' + cast( (datediff([millisecond], mdbus.backup_start_date, mdbus.backup_finish_date) / 1000 / 60 / 60) AS varchar(10)), 2)

    + ':' + right('0' + cast(((datediff([millisecond], mdbus.backup_start_date, mdbus.backup_finish_date) / 1000 / 60) % 60) AS varchar(10)), 2)

    + ':' + right('0' + cast(((datediff([millisecond], mdbus.backup_start_date, mdbus.backup_finish_date) / 1000) % 60) AS varchar(10)), 2)

    + '.' + right('00' + cast( (datediff([millisecond], mdbus.backup_start_date, mdbus.backup_finish_date) % 1000) AS varchar(10)), 3)

    , '')

    END

    ,'size_gb' = convert(decimal(10,2), (convert(float, mdbus.backup_size) / 1024 / 1024 / 1024))

    ,'percent_growth' = convert(decimal(10,2), (((convert(float, mdbus.backup_size) - mdbus_first.backup_size) / mdbus_first.backup_size) * 100))

    FROM

    msdb.dbo.backupset mdbus

    INNER JOIN

    (

    SELECT

    database_name

    ,'backup_set_id' = min(backup_set_id)

    FROM

    msdb.dbo.backupset

    GROUP BY

    database_name

    ) mdbus_first_rec ON (mdbus.database_name = mdbus_first_rec.database_name)

    INNER JOIN

    (

    SELECT

    database_name

    ,backup_set_id

    ,backup_start_date

    ,backup_size

    FROM

    msdb.dbo.backupset

    ) mdbus_first ON (mdbus.database_name = mdbus_first.database_name AND mdbus_first_rec.backup_set_id = mdbus_first.backup_set_id)

    WHERE

    mdbus.[type] = 'd'

    ORDER BY

    mdbus.database_name

    ,mdbus.backup_start_date DESC