Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP生成错误的算术结果_Php_Mysql - Fatal编程技术网

PHP生成错误的算术结果

PHP生成错误的算术结果,php,mysql,Php,Mysql,我有一个PHP脚本,它启动一个mysql查询并返回一个包含聚合列的结果集 我需要对这些列进行进一步的聚合,因此在我的脚本中已经这样做了 问题在于,对于20个限值中的前7个结果,计算结果明显不正确 这与桌子很大有关吗?3.5米行 我可以在SQL级别完成额外的聚合吗?假设A是聚合,B是聚合,我可以做C=B/A列吗 编辑:非常感谢这两个答案,很难选择接受哪一个,因为它们都以不同的方式帮助了我。不过,我决定接受答案,该答案提供了有关问题标题的更多细节。这可能是因为您正在对格式化字符串执行算术运算 尝试:

我有一个PHP脚本,它启动一个mysql查询并返回一个包含聚合列的结果集

我需要对这些列进行进一步的聚合,因此在我的脚本中已经这样做了

问题在于,对于20个限值中的前7个结果,计算结果明显不正确

这与桌子很大有关吗?3.5米行

我可以在SQL级别完成额外的聚合吗?假设A是聚合,B是聚合,我可以做C=B/A列吗


编辑:非常感谢这两个答案,很难选择接受哪一个,因为它们都以不同的方式帮助了我。不过,我决定接受答案,该答案提供了有关问题标题的更多细节。

这可能是因为您正在对格式化字符串执行算术运算

尝试:

编辑:

事实上,我确信这就是发生的事情:

echo '15,263,316' / '568,393'; // 0.026408450704225
echo 15263316 / 568393;        //26.853455267746

这可能是因为您正在对格式化字符串执行算术运算

尝试:

编辑:

事实上,我确信这就是发生的事情:

echo '15,263,316' / '568,393'; // 0.026408450704225
echo 15263316 / 568393;        //26.853455267746

它不起作用,因为您使用的是格式化的数字,比如27002864,而不是27002864。 是的,在SQL中更容易:

SELECT 4_nationality.nationality, COUNT(DISTINCT(txn_id)) as numtrans,
  SUM(sales) as sales, SUM(units) as units, YrQtr, 
  sum(sales)/count(distinct txn_id) atvc, 
  sum(units)/count(distinct txn_id) upbc, 
  sum(sales)/sum(units) arp
FROM 1_txns INNER JOIN 4_nationality USING (nationality_id)
WHERE YrQtr LIKE :period
GROUP BY nationality_id 
ORDER BY numtrans DESC
LIMIT 20

它不起作用,因为您使用的是格式化的数字,比如27002864,而不是27002864。 是的,在SQL中更容易:

SELECT 4_nationality.nationality, COUNT(DISTINCT(txn_id)) as numtrans,
  SUM(sales) as sales, SUM(units) as units, YrQtr, 
  sum(sales)/count(distinct txn_id) atvc, 
  sum(units)/count(distinct txn_id) upbc, 
  sum(sales)/sum(units) arp
FROM 1_txns INNER JOIN 4_nationality USING (nationality_id)
WHERE YrQtr LIKE :period
GROUP BY nationality_id 
ORDER BY numtrans DESC
LIMIT 20