postgresql 如何选择包含最大数据的所有数据?[已关闭]

fykwrbwg  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(159)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

6天前关闭。
Improve this question

我想选择销售产品数量最多的人所销售的所有产品数量,乔治,该人的销售产品数量为1200。
我希望得到以下结果:

但我得到的只是每个人的最高金额。

piok6c0g

piok6c0g1#

我们可以在这里尝试使用SUM()作为窗口函数:

WITH cte AS (
    SELECT *, SUM(no_products_sold) OVER
                  (PARTITION BY sale_person_id) AS total_sold
    FROM yourTable
),
cte2 AS (
    SELECT *, RANK() OVER (ORDER BY total_sold DESC) rnk
    FROM cte
)

SELECT
    sale_person_id,
    sale_person_name,
    commission_percentage,
    no_products_sold,
    sales_department
FROM cte2
WHERE rnk = 1;

第一个CTE在概念上创建一个新列total_sold,该列是每人销售的产品总数。但是,它保留原始表中的所有行。第二个CTE按降序计算total_sold的排名。最后一个外部查询仅限于销售总额最高的销售人员行。

相关问题