Usar Alias en clausula Where en PostgreSql

A veces necesitamos tomar del resultado de una query un alias como criterio para filtrar el resultado. Una forma que encontré fue la siguiente:

SELECT * FROM (

SELECT u.udi_id, u.udi_nombre, u.sem_codigo, m.car_id,

(SELECT COUNT(mud.udi_id) FROM matricula_unidad_didactica AS mud INNER JOIN matricula AS ma ON mud.mat_id=ma.mat_id WHERE mud.udi_id=u.udi_id AND ma.sem_codigo='II' AND ma.mat_anio_academico=2015 AND mud.mud_asistencia_porcentaje>=mud.mud_asistencia_minima AND (mud.mud_nota_final >= mud.mud_nota_evaluacion_minima AND mud.mud_nota_final < mud.mud_nota_minima) GROUP BY mud.udi_id) AS cantidad_evaluacion FROM unidad_didactica AS u INNER JOIN modulo AS m ON u.mod_id=m.mod_id INNER JOIN carrera AS c ON m.car_id=c.car_id WHERE u.sem_codigo = 'II' AND u.udi_eliminado = '0' ORDER BY u.udi_nombre ASC

) AS tabla WHERE cantidad_evaluacion>0

Esta query entre sus columnas devuelve una columna generada por una subquery, este resultado pertenece a una query principal que usa el alias en el where.

Es un tip simple pero útil en algunos casos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *