如何查询给定固定值的值的百分比

时间:2014-01-12 13:35:57

标签: mysql sql percentage

这是我最新的难题:

我需要查询给定距离内的百分比客户,其中表CUSTOMERS的列为CUST(客户编号),LOCX(距离+ - 值),LOCY(距离+ - 值)。

X将是我给定的距离。

到目前为止,我有:

SELECT CUST
FROM CUSTOMER
WHERE
ABS (LOCX) <= X
AND
ABS (LOCY) <= X

这为我提供了X内的客户,但仍需要百分比值。

结果表最好包括距离(X),记录数,记录总数和客户百分比(返回记录的百分比)

1 个答案:

答案 0 :(得分:0)

这是你在找什么?它使用条件聚合来获取X中的数字:

SELECT X,
       sum(case when abs(locx) <= x and abs(locy) <= x then 1 else 0 end) as NumWithinX,
       count(*) as Num,
       avg(case when abs(locx) <= x and abs(locy) <= x then 1.0 else 0 end) as RatioInX
FROM CUSTOMER;

编辑:

在MySQL中,你可以做你想做的事情:

SELECT X,
       sum(abs(locx) <= x and abs(locy) <= x) as NumWithinX,
       count(*) as Num,
       concat(avg(abs(locx) <= x and abs(locy) <= x)*100, '%') as PercentInX
FROM CUSTOMER;

case表单也有效(并且是ANSI标准)。 MySQL将布尔值视为01,因此您可以对它们进行直接算术处理。