Добавлять фиктивную колонну, сделав select в Redshift

Возможно добавлять фиктивную колонну во время реализации одного selectв SQL Redshift?

Я делаю консультацию в таблицу системы (конкретно, в stv_wlm_query_state) и, если поле exec_timeбольше 4 часов, должна появляться в вышеупомянутой колонне стоимость WARNING, и если он больше 8 часов, стоимость должен быть CRITICAL.

Возможно?

Таблица раньше упомянутая, он содержит следующие поля:

xid task query service_class slot_count wlm_start_time state queue_time exec_time.

Любая линия результата была бы:

58992537 1262584 1269123 8 1 2019-03-20 06:53:18 Returning 0 2129442104.

Я нуждаюсь в том, чтобы добавить эту "виртуальную" колонну, названную например "Оценка", контент которой будет зависеть от стоимости exec_time. Если этот больше четырех часов, должна выходить в этой виртуальной колонне стоимость WARNING; в случае когда он больше восьми, стоимость должен быть CRITICAL.

select, который я использую, - следующий:

select query as idquery,queue_time as tiempo_en_cola_microseg,exec_time as tiempo_ejecucion_microseg,(tiempo_en_cola_microseg+tiempo_ejecucion_microseg) as tiempo_total_microseg ,state as estado, mod(cast(floor(tiempo_total_microseg/3600000000) as integer),24) || ':' || mod(cast(floor(tiempo_total_microseg/60000000) as integer),60) || ':' || mod(cast(floor(tiempo_total_microseg/1000000) as integer),60) as duracion_hhmmss from stv_wlm_query_state where tiempo_total_microseg >= 14400000000;

Я добавил рекомендацию @PatricioMoracho использования CASE во мне select и оно я функционировало верно:

`case tiempo_total_microseg
when tiempo_total_microseg>28800000000
then 'CRITICAL' else 'WARNING'
end as situacion`
0
задан 20.03.2019, 10:24
1 ответ

Продолжая указания @PatricioMoracho в комментариях моего вопроса, adjuntГ© один 'ЖЕНИТЕ WHEN, решая asГ - мою проблему.

Оставил в continuaciГіn ее soluciГіn:

select query as idquery,wlm_start_time as inicio,queue_time as 
tiempo_en_cola_microseg,exec_time as tiempo_ejecucion_microseg, 
(tiempo_en_cola_microseg+tiempo_ejecucion_microseg) as tiempo_total_microseg ,state as estado,
mod(cast(floor(tiempo_total_microseg/3600000000) as integer),24) || ':' || 
mod(cast(floor(tiempo_total_microseg/60000000) as integer),60) || ':' || 
mod(cast(floor(tiempo_total_microseg/1000000) as integer),60)  as duracion_hhmmss,
case tiempo_total_microseg
when tiempo_total_microseg>28800000000
then 'CRITICAL' else 'WARNING'
end as situacion
from stv_wlm_query_state
where tiempo_total_microseg >= 14400000000
order by duracion_hhmmss;
0
ответ дан 02.12.2019, 05:27

Теги

Похожие вопросы