diff --git a/pg/list-ids.sql b/pg/list-ids.sql new file mode 100644 index 0000000..f955b74 --- /dev/null +++ b/pg/list-ids.sql @@ -0,0 +1,13 @@ +SELECT + COUNT(value), + SUBSTRING(value from '(.*)<') AS name, + COALESCE(SUBSTRING(value from '<(.*)>'), value) AS id +FROM + header +WHERE + name = 'List-Id' +GROUP BY + value +ORDER BY + count DESC +; diff --git a/pg/named-list-ids.sql b/pg/named-list-ids.sql new file mode 100644 index 0000000..ebcf212 --- /dev/null +++ b/pg/named-list-ids.sql @@ -0,0 +1,30 @@ +SELECT + DISTINCT ON( + LOWER(COALESCE(SUBSTRING(value from '<(.*)>'), value))) + COALESCE(named.count, 1), + LOWER(COALESCE(named.name, + LOWER(COALESCE(SUBSTRING(value from '<(.*)>'), value)))) AS id, + unnamed.name AS name +FROM + header unnamed +LEFT OUTER JOIN ( + SELECT + DISTINCT ON (LOWER(COALESCE(SUBSTRING(value from '<(.*)>'), value))) + COUNT(value) AS count, + SUBSTRING(value from '(.*)<') AS name, + LOWER(COALESCE(SUBSTRING(value from '<(.*)>'), value)) AS id + FROM + header + WHERE + name != '' + GROUP BY + LOWER(COALESCE(SUBSTRING(value from '<(.*)>'), value)), + SUBSTRING(value from '(.*)<') + ORDER BY + id, + count DESC, + name +) named +ON + named.id = LOWER(COALESCE(SUBSTRING(unnamed.value from '<(.*)>'), unnamed.value)) +;