email/pg/fill-abook.sql

38 lines
697 B
SQL

DROP TABLE abook;
CREATE TABLE
abook (count, name, address)
AS SELECT
DISTINCT ON(lower(address))
CASE WHEN
named.count IS NULL THEN 1
ELSE named.count
END,
CASE WHEN
named.name IS NULL THEN lower(unnamed.address)
ELSE named.name
END,
lower(unnamed.address)
FROM
contact unnamed
LEFT OUTER JOIN (
SELECT
DISTINCT ON (lower(address))
count(name),
name,
lower(address) AS laddr
FROM
contact
WHERE
name != ''
GROUP BY
lower(address), name
ORDER BY
lower(address),
count DESC,
name
) named
ON
named.laddr = lower(unnamed.address)
;