PostgreSQL 支持递归查询和分组统计,下面是两种情况的示例。
假设我们有一个表格 employees
,其中包含员工的信息,包括他们的上级(通过 manager_id
字段)。我们想要查询每个经理的直接下属。
WITH RECURSIVE employee_hierarchy AS (
SELECT id, name, manager_id, 1 as level
FROM employees
WHERE manager_id IS NULL
UNION ALL
SELECT e.id, e.name, e.manager_id, eh.level + 1
FROM employees e
JOIN employee_hierarchy eh ON e.manager_id = eh.id
)
SELECT * FROM employee_hierarchy;
这个查询首先从没有上级(manager_id IS NULL
)的员工开始,然后递归地添加下属。结果将显示每个员工及其在层次结构中的级别。
假设我们有一个表格 orders
,其中包含订单信息,以及一个表格 order_items
,其中包含每个订单的项目。我们想要计算每个订单的总金额并按日期分组统计。
SELECT o.date, SUM(oi.price * oi.quantity) as total_amount
FROM orders o
JOIN order_items oi ON o.id = oi.order_id
GROUP BY o.date;
这个查询首先连接 orders
和 order_items
表格,然后按 o.date
分组,并计算每个订单的总金额(SUM(oi.price * oi.quantity)
)。结果将显示每个日期的订单总金额。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。