mysql - 查询 avg 的最大值

标签 mysql sql mysql-workbench average

我有这样的查询:查找 2010-2014 年间产品“beta600”平均金额最大的分公司和分公司所在城市。
我执行这段代码但没有得到任何结果。执行大约需要 10 分钟,结果为 null。你能帮忙吗?

SELECT DISTINCT branch_code,branch_city, AVG(trn_amount)) AS max_avg
FROM branches,transactions,products,accounts
WHERE branches.branch_code = accounts.branch_code AND 
products.product_code = accounts.product_code AND 
accounts.account_id = transactions.account_id AND 
product_name = 'Beta600' AND
trn_date > '31/12/2009' AND trn_date < '1/1/2015'
GROUP BY branch_code,branch_city
ORDER BY max_avg
LIMIT 1;

最佳答案

您的方法似乎合理,但查询可能需要一些工作。以下是建议:

  • 使用明确的JOIN语法。简单规则:永远不要FROM子句中使用逗号。 *始终使用显式JOIN`语法。
  • 使用表别名。它们使查询更易于编写和阅读。
  • 使用标准日期格式 - YYYY-MM-DD。

结果查询:

SELECT b.branch_code, b.branch_city, AVG(t.trn_amount)) AS max_avg
FROM branches b JOIN
     accounts a
     ON b.branch_code = a.branch_code JOIN
     transactions t
     ON a.account_id = t.account_id JOIN
     products p
     ON p.product_code = a.product_code
WHERE p.product_name = 'beta600' AND
      t.trn_date > '2009-12-31' AND t.trn_date < '2015-01-01'
GROUP BY branch_code, branch_city
ORDER BY max_avg
LIMIT 1;

如果您的查询未返回任何结果,则 WHERE 子句将过滤掉所有内容。也许是日期格式或产品名称的大小写导致了问题。

关于mysql - 查询 avg 的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37151322/

相关文章:

MySQL Workbench 工作区恢复?

mysql - 替换字符串查询中的所有单引号

python - MySQL 语法错误?

c# - Visual Studio QueryFirst 扩展

php - 仅从 codeigniter 中的列中选择唯一值

sql - 合并两个 View

mysql - 仅当字符串以 MySQL 中的特定模式结尾时才替换 SELECT 中的字符?

SQL Server INSERT 和 SELECT 语句之间出现死锁

mysql - SQL:GROUP BY 子句中的所有属性都需要在 SELECT 子句中列出吗?

sql - MySQL MAX() 函数比较更新中的数值?