MYSQL / Query,我如何计算Query中两个值的百分比

时间:2015-01-02 22:47:38

标签: mysql

我有一个查询,我希望过滤结果列表,但基于两个值之间的百分比。

我在这两个数据库中都有两个数据库'亚马逊'和'Zavvi'我有相同的产品和销售量,并使用以下内容过滤结果

SELECT amazon.price AS amazon_price, zavvi.price AS zavvi_price 
FROM amazon.price, zavvi.price 
WHERE amazon.price > zavvi.price

但是,我想计算两个价格的百分比,然后只显示该数量百分比的记录,但如果可能的话,在查询中全部完成。

目前我必须使用上面的查询我也给出了一个例子,然后在循环中做一个IF语句,计算每个记录的百分比,然后如果它符合我的需要,将它添加到一个数组,如此

$myrow['percent'] = number_format((100/$myrow['amazon_price'])*$myrow['zavvi_price'],0);
        if ($myrow['percent'] >= 80) {

2 个答案:

答案 0 :(得分:0)

请尝试以下查询,我希望应该提供帮助:

SELECT 
    amazon.price AS amazon_price, 
    zavvi.price AS zavvi_price 
FROM 
    amazon, 
    zavvi 
WHERE 
    amazon.price > zavvi.price
    AND zavvi.price >= 0.8 * amazon.price

条件AND zavvi.price >= 0.8 * amazon.price在逻辑上似乎等于计算值$myrow['percent'] >= 80

BTW我认为原始查询FROM amazon.price, zavvi.price中的部分是错误的。


<强>已更新

我已经编辑了答案,考虑到同事正确加入表格以及评论中提供的信息给@Leo的答案。请在下面找到INNER-JOINED版本的查询:

SELECT 
    amazon.price AS amazon_price, 
    zavvi.price AS zavvi_price 
FROM 
    amazon 
    INNER JOIN zavvi 
        ON amazon.ean = zavvi.ean
WHERE 
    amazon.price > zavvi.price
    AND zavvi.price >= 0.8 * amazon.price

如果您需要有关联接的一些信息,可以在这里找到一些帮助:

答案 1 :(得分:0)

你也可以在

里面做数学计算
SELECT TOP 100 

    amazon.price AS amazon_price, 
    zavvi.price AS zavvi_price,
    zavvi.price / amazon.price AS zavvi_ratio 
FROM amazon.price, zavvi.price 

WHERE amazon.price > 0 AND 
    amazon.price > zavvi.price

HAVING zavvi_ratio > 0.8

ORDER BY zavvi_ratio DESC

P.S。我假设这里有某种联系你为了简洁而排除。

FROM amazon INNER JOIN zavvi ON amazon.id = zavvi.id