gpt4 book ai didi

MySql SUM 和 JOIN

转载 作者:行者123 更新时间:2023-11-29 00:56:54 25 4
gpt4 key购买 nike

我正在尝试计算销售代理列表的销售额,此计数每隔几分钟进行一次,并更新显示“销售排行榜”的屏幕,该屏幕是在后台使用 Ajax 调用进行更新的。

我有一个每晚创建并填充的表,其中包含 agent_id 以及一周和一个月的总销售额。我创建了第二个临时表,用于计算当天的销售额。

我需要结合这两个表来创建 agent_count 中所有代理的当前销售列表。

表agent_count;

agent_id (varchar),
team_id (varchar),
name (varchar),
day(int),
week(int),
month(int)

表销售;

agent_id (varchar),
day(int)

我不知道如何组合这些表格。我想我需要使用连接,因为必须返回所有代理 - 即使它们没有出现在 agent_count 表中。

首先,我进行了一个简单的调用,以获取所有代理的周和月总计

SELECT agent_id, team_id, name, week, month FROM agent_count;

我为今天的销售额创建了一个临时表,然后我计算了当天每个代理的销售额

CREATE TEMPORARY TABLE temp_todays_sales
SELECT s.id, s.agent_id
FROM sales s
WHERE DATEDIFF(s.uploaded, NOW()) = 0
AND s.valid = 1;

SELECT tts.agent_id, COUNT(tts.id) as today
FROM temp_todays_sales tts
GROUP BY tts.agent_id;

什么是最好/最简单的方法来组合这些以最终得到一个结果集,例如

agent_id, team_id, name, day, week, month

其中周和月还包括每日总计

感谢您的帮助!

克里斯蒂

最佳答案

SELECT  s.agent_id, ac.team_id, ac.name,
s.`day` + COALESCE(ac.`day`, 0) AS `day`,
s.`day` + COALESCE(ac.`week`, 0) AS `week`,
s.`day` + COALESCE(ac.`month`, 0) AS `month`
FROM sales s
LEFT JOIN
agent_count ac
ON ac.agent_id = s.agent_id

team_idname将是 NULL如果agent_count中没有记录代理人。

如果两个表中都可能缺少代理,您通常需要制作一个 FULL JOIN但自 MySQL不支持后者,您可以使用它的穷人替代品:

SELECT  agent_id, MAX(team_id), MAX(name),
SUM(day), SUM(week), SUM(month)
FROM (
SELECT agent_id, NULL AS team_id, NULL AS name, day, day AS week, day AS month
FROM sales
UNION ALL
SELECT *
FROM agent_count
) q
GROUP BY
agent_id

关于MySql SUM 和 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5702501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com