Можно ли это все сделать одним запросом, вместо нескольких?
Да можно сделать все одним запросом с помощью sql.
SELECT 
    SUM(amount) as total_sum,
    DATE_FORMAT(FROM_UNIXTIME(time), '%d.%m.%Y') as date,
    SUM(CASE WHEN time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY)) THEN amount ELSE 0 END) as day_1,
    SUM(CASE WHEN time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 2 DAY)) AND time <= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY)) THEN amount ELSE 0 END) as day_2,
    SUM(CASE WHEN time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 3 DAY)) AND time <= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 2 DAY)) THEN amount ELSE 0 END) as day_3,
    SUM(CASE WHEN time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 4 DAY)) AND time <= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 3 DAY)) THEN amount ELSE 0 END) as day_4,
    SUM(CASE WHEN time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 5 DAY)) AND time <= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 4 DAY)) THEN amount ELSE 0 END) as day_5,
    SUM(CASE WHEN time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 6 DAY)) AND time <= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 5 DAY)) THEN amount ELSE 0 END) as day_6,
    SUM(CASE WHEN time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY)) AND time <= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 6 DAY)) THEN amount ELSE 0 END) as day_7,
    SUM(amount) as total_amount
FROM payments
WHERE status = 3 AND shop_id = :shop_id AND time > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY))
select \'u1\' as key, sum(amount) as sum from payments where status = 3 and shop_id = '.$shop->id.' and time > '.$sm1.' and time < '.$sm2.'
UNION
select \'u2\' as key, sum(amount) as sum from payments where status = 3 and shop_id = '.$shop->id.' and time > '.$rr1.' and time < '.$rr2.'
UNION
select \'u3\' as key, sum(amount) as sum from payments where status = 3 and shop_id = '.$shop->id.' and time > '.$rrk1.' and time < '.$rrk2.'

и тд все запросы через union вставляем в один select
вместо fetchColumn используем цикл и fetchAssoc

в итогу получится список вида

key | sum
-----------
u1  | ...
u2  | ...
u3  | ...

по нагрузке на базу будет то же самое что делать отдельные запросы, просто мы склеиваем результаты не на php, а на уровне бд через union