gpt4 book ai didi

mysql left join同表sum错误结果

转载 作者:行者123 更新时间:2023-11-29 01:04:25 28 4
gpt4 key购买 nike

我的查询有问题,应该执行以下操作:

  1. 获取特定记录并计算特定时间段内的一些值
  2. 计算这些关键字在另一段时间的相同值

这应该发生在 1 个查询中。我能够编写它,但 SUM() 返回的错误值比正常值高得多。我认为这是因为 LEFT JOIN。

SELECT SQL_CALC_FOUND_ROWS table1.id, table1.KeywordId, table1.AccountName, table1.CampaignName, table1.AdGroupName, table1.Keyword, table1.MatchType, SUM(table1.Spend)/SUM(table1.Clicks) AS AverageCpc, SUM(table1.Impressions) AS Impressions, (SUM(table1.Clicks)*table1.revenue_price)/SUM(table1.Impressions) AS Ctr, SUM(table1.Impressions*table1.AveragePosition)/SUM(table1.Impressions) AS AveragePosition, SUM(table1.Clicks) AS Clicks, SUM(table1.Spend) AS Spend, SUM(table1.free_joins) AS FreeJoins, SUM(table1.paid_joins) AS PaidJoins, SUM(table1.paid_joins)*table1.revenue_price AS Revenue, (SUM(table1.paid_joins)*table1.revenue_price)-SUM(table1.Spend) AS Profit, (SUM(table1.paid_joins)*table1.revenue_price)/SUM(table1.Clicks) AS RevPerClick, table1.CurrentMaxCpc, SUM(table2.Impressions) AS Impressions_chg, SUM(table2.Clicks) AS Clicks_chg, SUM(table2.Impressions*table2.AveragePosition)/SUM(table2.Impressions) AS AveragePosition_chg, (SUM(table2.Clicks)*table2.revenue_price)/SUM(table2.Impressions) AS Ctr_chg, SUM(table2.Spend)/SUM(table2.Clicks) AS AverageCpc_chg, table2.CurrentMaxCpc as CurrentMaxCpc_chg, SUM(table2.free_joins) AS FreeJoins_chg, SUM(table2.paid_joins) AS PaidJoins_chg
FROM keywords_stats_google_naughtymeetings as table1
LEFT JOIN keywords_stats_google_naughtymeetings as table2
ON table1.keywordId = table2.keywordId
WHERE table1.timeperiod >= '2012-05-21 00:00:00' and table1.timeperiod <= '2012-05-27 00:00:00'
AND table2.timeperiod >= '2012-05-14' and table2.timeperiod <= '2012-05-20'

GROUP BY table1.KeywordId, table1.MatchType, table1.revenue_price, table2.KeywordId, table2.MatchType, table2.revenue_price
ORDER BY FreeJoins
asc
LIMIT 0, 10

有人可以告诉我如何获得正确的 SUM 结果吗?

最佳答案

我想你在这里需要INNER JOIN。尝试将 LEFT JOIN 替换为 INNER JOIN

附言我不完全明白你想要什么,但我认为这个想法应该更简单。

(SELECT id, fields_for_first_period_of_time
FROM keywords_stats_google_naughtymeetings) t1
JOIN
(SELECT id, fields_for_second_period_of_time
FROM keywords_stats_google_naughtymeetings) t2
ON t1.id = t2.id

这只是想法的草图。我的意思是通过两个单独的查询获得结果。然后加入他们。这将更容易调试。希望对您有所帮助。

关于mysql left join同表sum错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10913582/

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