[
    {
        "id": 923,
        "tag": "data",
        "description": "",
        "total_entry": 1,
        "total_blogmark": 18,
        "total_quotation": 2,
        "is_exact_match": 1,
        "count": 21
    },
    {
        "id": 5110,
        "tag": "datasette",
        "description": "[Datasette](https://datasette.io/) is an open source tool for exploring and publishing data.",
        "total_entry": 232,
        "total_blogmark": 179,
        "total_quotation": 2,
        "is_exact_match": 0,
        "count": 413
    },
    {
        "id": 926,
        "tag": "databases",
        "description": "",
        "total_entry": 23,
        "total_blogmark": 69,
        "total_quotation": 7,
        "is_exact_match": 0,
        "count": 99
    },
    {
        "id": 925,
        "tag": "data-journalism",
        "description": "",
        "total_entry": 18,
        "total_blogmark": 26,
        "total_quotation": 0,
        "is_exact_match": 0,
        "count": 44
    },
    {
        "id": 5222,
        "tag": "datasette-cloud",
        "description": "The SaaS hosted version of Datasette, at [datasette.cloud](https://www.datasette.cloud/)",
        "total_entry": 32,
        "total_blogmark": 11,
        "total_quotation": 0,
        "is_exact_match": 0,
        "count": 43
    }
]

SELECT "blog_tag"."id", "blog_tag"."tag", "blog_tag"."description", (SELECT COUNT(DISTINCT U1."entry_id") FILTER (WHERE (NOT U2."is_draft")) AS "count" FROM "blog_tag" U0 LEFT OUTER JOIN "blog_entry_tags" U1 ON (U0."id" = U1."tag_id") LEFT OUTER JOIN "blog_entry" U2 ON (U1."entry_id" = U2."id") WHERE U0."id" = ("blog_tag"."id") GROUP BY U0."id") AS "total_entry", (SELECT COUNT(DISTINCT U1."blogmark_id") FILTER (WHERE (NOT U2."is_draft")) AS "count" FROM "blog_tag" U0 LEFT OUTER JOIN "blog_blogmark_tags" U1 ON (U0."id" = U1."tag_id") LEFT OUTER JOIN "blog_blogmark" U2 ON (U1."blogmark_id" = U2."id") WHERE U0."id" = ("blog_tag"."id") GROUP BY U0."id") AS "total_blogmark", (SELECT COUNT(DISTINCT U1."quotation_id") FILTER (WHERE (NOT U2."is_draft")) AS "count" FROM "blog_tag" U0 LEFT OUTER JOIN "blog_quotation_tags" U1 ON (U0."id" = U1."tag_id") LEFT OUTER JOIN "blog_quotation" U2 ON (U1."quotation_id" = U2."id") WHERE U0."id" = ("blog_tag"."id") GROUP BY U0."id") AS "total_quotation", CASE WHEN UPPER("blog_tag"."tag"::text) = UPPER(data) THEN 1 ELSE 0 END AS "is_exact_match", (((SELECT COUNT(DISTINCT U1."entry_id") FILTER (WHERE (NOT U2."is_draft")) AS "count" FROM "blog_tag" U0 LEFT OUTER JOIN "blog_entry_tags" U1 ON (U0."id" = U1."tag_id") LEFT OUTER JOIN "blog_entry" U2 ON (U1."entry_id" = U2."id") WHERE U0."id" = ("blog_tag"."id") GROUP BY U0."id") + (SELECT COUNT(DISTINCT U1."blogmark_id") FILTER (WHERE (NOT U2."is_draft")) AS "count" FROM "blog_tag" U0 LEFT OUTER JOIN "blog_blogmark_tags" U1 ON (U0."id" = U1."tag_id") LEFT OUTER JOIN "blog_blogmark" U2 ON (U1."blogmark_id" = U2."id") WHERE U0."id" = ("blog_tag"."id") GROUP BY U0."id")) + (SELECT COUNT(DISTINCT U1."quotation_id") FILTER (WHERE (NOT U2."is_draft")) AS "count" FROM "blog_tag" U0 LEFT OUTER JOIN "blog_quotation_tags" U1 ON (U0."id" = U1."tag_id") LEFT OUTER JOIN "blog_quotation" U2 ON (U1."quotation_id" = U2."id") WHERE U0."id" = ("blog_tag"."id") GROUP BY U0."id")) AS "count" FROM "blog_tag" WHERE UPPER("blog_tag"."tag"::text) LIKE UPPER(%data%) ORDER BY 7 DESC, 8 DESC, LENGTH("blog_tag"."tag") ASC LIMIT 5