Jag kämpade med samma fråga och "mysql-syntax är icke-standard" är inte ett giltigt argument enligt min mening. PostgreSQL lägger också till praktiska icke-standardiserade tillägg, till exempel "INSERT ... RETURNING ..." för att få auto-ID efter infogning. Att upprepa stora frågor är inte heller en elegant lösning.
Däremot tyckte jag att WITH-uttalandet var mycket användbart (CTE:s). Det skapar liksom en tillfällig vy i frågan som du kan använda som en vanlig tabell då. Jag är inte säker på om jag har skrivit om din JOIN korrekt, men i allmänhet borde det fungera så här:
WITH jobs_refined AS (
SELECT
jobs.*,
(SELECT CASE WHEN lead_informations.state IS NOT NULL THEN lead_informations.state ELSE 'NEW' END) AS lead_state
FROM jobs
LEFT JOIN lead_informations
ON lead_informations.job_id = jobs.id
AND lead_informations.mechanic_id = 3
)
SELECT *
FROM jobs_refined
WHERE lead_state = 'NEW'