whatev
unknown
sql
2 years ago
3.2 kB
8
Indexable
SELECT
formatDateTime(quit_time, '%d %b %y @ %H%p') quit_time,
formatDateTime(target_time, '%d %b %y @ %H%p') target_time,
concat(toString(days_abs), 'd ', toString(hrs_rel), 'h ', toString(mins_rel), 'm') AS elapsed,
hrs_abs AS elapsed_hrs,
concat(toString(rem_days_abs), 'd ', toString(rem_hrs_rel), 'h ', toString(rem_mins_rel), 'm') AS remaining,
target_tag,
progress_bar,
concat(
toString(toInt64(f_percent_done)),
'.',
leftPad(toString(toInt64(f_percent_done * 100) % 100), 2, '0'),
'%'
) percent_done,
concat(
toString(toInt64(100 - f_percent_done)),
'.',
leftPad(toString(toInt64((100 - f_percent_done) * 100) % 100), 2, '0'),
'%'
) percent_left
FROM (
SELECT
target_tag,
target_time,
curr_time,
quit_time,
dateDiff('second', quit_time, curr_time) AS seconds_abs,
toInt64(seconds_abs / 86400) AS days_abs,
toInt64(seconds_abs / 3600) AS hrs_abs,
toInt64(seconds_abs / 60) AS mins_abs,
hrs_abs - toInt64(days_abs * 24) AS hrs_rel,
mins_abs - toInt64(hrs_abs * 60) AS mins_rel,
greatest(dateDiff('second', curr_time, target_time), 0) AS rem_seconds_abs,
toInt64(rem_seconds_abs / 86400) AS rem_days_abs,
toInt64(rem_seconds_abs / 3600) AS rem_hrs_abs,
toInt64(rem_seconds_abs / 60) AS rem_mins_abs,
rem_hrs_abs - toInt64(rem_days_abs * 24) AS rem_hrs_rel,
rem_mins_abs - toInt64(rem_hrs_abs * 60) AS rem_mins_rel,
progress_bar,
f_percent_done
FROM (
SELECT
quit_time,
curr_time,
x.1 AS target_tag,
x.2 AS target_time,
dateDiff('second', quit_time, curr_time) AS curr_val,
dateDiff('second', quit_time, x.2) AS max_val,
bar(curr_val, 0, max_val, 50) AS progress_bar,
least((curr_val / max_val * 100), 100) as f_percent_done
FROM (
SELECT
'Asia/Singapore' AS tz,
toDateTime('2024-02-07 10:00:00', tz) AS quit_time,
toDateTime(now(), tz) AS curr_time,
arrayJoin(array(
('4 weeks', addWeeks(quit_time, 4)),
('1 month', addMonths(quit_time, 1)),
('5 weeks', addWeeks(quit_time, 5)),
('6 weeks', addWeeks(quit_time, 6)),
('666 hrs', addHours(quit_time, 666)),
('700 hrs', addHours(quit_time, 700)),
('777 hrs', addHours(quit_time, 777)),
('800 hrs', addHours(quit_time, 800)),
('888 hrs', addHours(quit_time, 888)),
('900 hrs', addHours(quit_time, 900)),
('1000 hrs', addHours(quit_time, 1000)),
('1024 hrs', addHours(quit_time, 1024)),
('2 months', addMonths(quit_time, 2)),
('3 months', addMonths(quit_time, 3)),
('6 months', addMonths(quit_time, 6)),
('year', addMonths(quit_time, 12))
)) AS x
)
)
) ORDER BY f_percent_done DESC
Editor is loading...
Leave a Comment