public.vwknowledgecategory

public.vwknowledgecategory

Description

Knowledge base categories with KB context, document statistics, feedback metrics, and hierarchy information

Table Definition
CREATE VIEW vwknowledgecategory AS (
 SELECT cat.id AS category_id,
    cat.name AS category_name,
    cat.description AS category_description,
    cat.externalid AS external_id,
    cat.datecreated AS date_created,
    cat.datemodified AS date_modified,
    cat.documentcount AS document_count,
    cat.updated AS last_updated,
    cat.parentcategoryid AS parent_category_id,
    cat.parentcategoryname AS parent_category_name,
    pcat.description AS parent_category_description,
    cat.knowledgebaseid AS knowledge_base_id,
    kb.name AS knowledge_base_name,
    kb.description AS knowledge_base_description,
    kb.corelanguage AS knowledge_base_language,
    kb.published AS knowledge_base_published,
    kb.faqcount AS knowledge_base_faq_count,
    kb.articlecount AS knowledge_base_article_count,
        CASE
            WHEN (cat.parentcategoryid IS NULL) THEN 'Root Category'::text
            WHEN (pcat.parentcategoryid IS NULL) THEN 'Level 1'::text
            ELSE 'Level 2+'::text
        END AS category_level,
        CASE
            WHEN (cat.parentcategoryname IS NOT NULL) THEN ((((cat.parentcategoryname)::text || ' > '::text) || (cat.name)::text))::character varying
            ELSE cat.name
        END AS category_path,
    COALESCE(doc_stats.total_documents, (0)::bigint) AS total_documents,
    COALESCE(doc_stats.published_documents, (0)::bigint) AS published_documents,
    COALESCE(doc_stats.draft_documents, (0)::bigint) AS draft_documents,
    COALESCE(doc_stats.visible_documents, (0)::bigint) AS visible_documents,
    COALESCE(feedback_stats.total_feedback, (0)::bigint) AS total_feedback,
    COALESCE(feedback_stats.positive_feedback, (0)::bigint) AS positive_feedback,
    COALESCE(feedback_stats.negative_feedback, (0)::bigint) AS negative_feedback,
        CASE
            WHEN (COALESCE(feedback_stats.total_feedback, (0)::bigint) > 0) THEN round((((feedback_stats.positive_feedback)::numeric * 100.0) / (feedback_stats.total_feedback)::numeric), 2)
            ELSE NULL::numeric
        END AS positive_feedback_percentage,
    COALESCE(child_counts.child_category_count, (0)::bigint) AS child_category_count
   FROM (((((knowledgebasecategorydata cat
     LEFT JOIN knowledgebase kb ON (((cat.knowledgebaseid)::text = (kb.id)::text)))
     LEFT JOIN knowledgebasecategorydata pcat ON (((cat.parentcategoryid)::text = (pcat.id)::text)))
     LEFT JOIN ( SELECT knowledgebasedocument.categoryid,
            count(*) AS total_documents,
            sum(
                CASE
                    WHEN ((knowledgebasedocument.state)::text = 'Published'::text) THEN 1
                    ELSE 0
                END) AS published_documents,
            sum(
                CASE
                    WHEN ((knowledgebasedocument.state)::text = 'Draft'::text) THEN 1
                    ELSE 0
                END) AS draft_documents,
            sum(
                CASE
                    WHEN (knowledgebasedocument.visible = true) THEN 1
                    ELSE 0
                END) AS visible_documents
           FROM knowledgebasedocument
          GROUP BY knowledgebasedocument.categoryid) doc_stats ON (((cat.id)::text = (doc_stats.categoryid)::text)))
     LEFT JOIN ( SELECT doc.categoryid,
            count(*) AS total_feedback,
            sum(
                CASE
                    WHEN ((fb.rating)::text = 'Positive'::text) THEN 1
                    ELSE 0
                END) AS positive_feedback,
            sum(
                CASE
                    WHEN ((fb.rating)::text = 'Negative'::text) THEN 1
                    ELSE 0
                END) AS negative_feedback
           FROM (knowledgedocumentfeedbackdata fb
             JOIN knowledgebasedocument doc ON (((fb.documentid)::text = (doc.id)::text)))
          GROUP BY doc.categoryid) feedback_stats ON (((cat.id)::text = (feedback_stats.categoryid)::text)))
     LEFT JOIN ( SELECT knowledgebasecategorydata.parentcategoryid,
            count(*) AS child_category_count
           FROM knowledgebasecategorydata
          WHERE (knowledgebasecategorydata.parentcategoryid IS NOT NULL)
          GROUP BY knowledgebasecategorydata.parentcategoryid) child_counts ON (((cat.id)::text = (child_counts.parentcategoryid)::text)))
)

Columns

Name Type Default Nullable Children Parents Comment
category_id varchar(50) true
category_name varchar(100) true
category_description varchar(255) true
external_id varchar(100) true
date_created timestamp without time zone true
date_modified timestamp without time zone true
document_count integer true
last_updated timestamp without time zone true
parent_category_id varchar(100) true
parent_category_name varchar(100) true
parent_category_description varchar(255) true
knowledge_base_id varchar(100) true
knowledge_base_name varchar(100) true
knowledge_base_description varchar(255) true
knowledge_base_language varchar(50) true
knowledge_base_published boolean true
knowledge_base_faq_count integer true
knowledge_base_article_count integer true
category_level text true
category_path varchar true
total_documents bigint true
published_documents bigint true
draft_documents bigint true
visible_documents bigint true
total_feedback bigint true
positive_feedback bigint true
negative_feedback bigint true
positive_feedback_percentage numeric true
child_category_count bigint true

Referenced Tables

Name Columns Comment Type
public.knowledgebasecategorydata 11 BASE TABLE
public.knowledgebase 11 BASE TABLE
public.knowledgebasedocument 15 BASE TABLE
public.knowledgedocumentfeedbackdata 15 BASE TABLE