首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算几个销售者之间的最佳销售

计算几个销售者之间的最佳销售
EN

Stack Overflow用户
提问于 2018-09-27 17:09:56
回答 1查看 105关注 0票数 1

我在用postgre。假设有5个卖家。每个月的销售记录在这样的数据库中(用户is :6,一月:10000美元,二月:20000美元,三月:10000美元,十二月:50000美元,年份:2018年)

我需要计算,可能只有一个查询,每个月最好的销售在一个数组的这种格式:(一月:15000美元,二月:30000美元,三月:40000美元,年份:2018年),我不需要userId。我只需要比较每个月的销售额,并显示最佳金额.

现在,我已经得到了这段代码,它运行良好,在给定的一年中给我用户每月6次的销售额:

代码语言:javascript
运行
复制
SELECT date_trunc('month', date_vente) AS txn_month, sum(prix_vente) as  monthly_sum,count(prix_vente) AS monthly_count
FROM crm_vente 
WHERE 1=1 
AND date_part('year', date_vente) =  2018 
AND id_user = 6
GROUP BY txn_month ORDER BY txn_month 

我不知道是否有人能告诉我,我可以用什么样的技术来获得最好的销售每12个月之间的5名雇员。

COuld我用视图?SHould我最好在php中做一个for循环,用每个用户每个月的销售额,然后做一种比较数组?

没有必要给我一个完整的解决方案,但也许是一个如何做的建议,直接与postgre?因为我现在唯一的解决方案是使用php并做一个不太好的代码。

天气不错,我去看看MOnday

对不起我的英语

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-28 11:27:56

代码语言:javascript
运行
复制
WITH monthly_sales AS (
SELECT 
date_trunc('month', date_vente) AS txn_month, 
user_id,
sum(prix_vente) as monthly_sum,
FROM crm_vente 
WHERE 1=1 
AND date_part('year', date_vente) =  2018 
GROUP BY txn_month, user_id
ORDER BY txn_month, user_id),

rank_monthly_sales_by_user_id AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY txn_month ORDER BY monthly_sum DESC) AS rank
FROM monthly_sales)

SELECT
txn_month,
monthly_sum
FROM rank_monthly_sales_by_user_id
WHERE rank = 1
ORDER BY txn_month ASC;

首先,你应该做的是得到每月的用户总数。这是一个名为月度销售的顶级子查询。Monthly_sales按月对每个用户的销售额进行汇总

接下来,要获得每个月的最大用户的总销售额,您必须对前一个子查询返回的行进行排序。这是由ROW_NUMBER()

ROW_NUMBER()在指定的窗口中获取行号,在本例中,它为每个月从monthly_sales中排序行(从每月1开始重新排序)。分区BY语句是我们要在其中执行行计数的窗口,这里是月份,因为我们希望按月对user_id的销售进行排序。order语句说明了如何对从1到n的行进行排序。我们使用的是降序monthly_sum。所以每月最高的金额是1,最低的是6。

下一个查询是只从rank_monthly_sales_by_user_id中选择行,这些行是当月销售额最高的(其中秩= 1)

这就给我们留下了一个产出,该行是一个月,当月销售额最高。

如果你需要帮助的话,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52542018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档