【问题标题】:Query to group by maximum depth of PostgreSQL Ltree?查询按PostgreSQL Ltree的最大深度分组?
【发布时间】:2011-04-03 23:37:21
【问题描述】:

我想查询名称为“Shania Twain”的所有产品,但我只想按最深的树对它们进行分组nlevel

假设我有一个如下表,名称为 categories

+---------------+---------------+---------------+
|id             |name           |tree           |
+---------------+---------------+---------------+
|1              |"Music"        |100            |
+---------------+---------------+---------------+
|2              |"Shania Twain" |100.1          |
+---------------+---------------+---------------+
|3              |"Artists"      |200            |
+---------------+---------------+---------------+
|5              |"Country"      |200.2          |
+---------------+---------------+---------------+
|6              |"Shania Twain" |200.2.4        |
+---------------+---------------+---------------+

例如,

SELECT MAX(cat.id),
       cat.name,
       MAX(cat.tree)
  FROM
       public.categories cat
 WHERE
       cat.name = "Shania Twain"
GROUP BY
       name
HAVING
       MAX(nlevel(cat.tree))

问题在于需要布尔表达式的HAVING 子句。子句MAX(nlevel(cat.tree)) 将返回一个整数。

我该怎么做?

提前致谢

马哈茂德

【问题讨论】:

    标签: sql database postgresql group-by


    【解决方案1】:
    SELECT
        cat.id
        cat.name,
        cat.tree
    FROM
        public.categories AS cat
    WHERE
        cat.name = 'Shania Twain'
    AND
       NLEVEL(cat.tree) = (SELECT MAX(NLEVEL(tree) FROM public.categories WHERE cat.name='Shania Twain'))
    

    【讨论】:

    • 我会接受这个答案,因为它回答了我的问题,但我想看看我将如何处理所有具有最深 nlevel 的条目。
    猜你喜欢
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多