如何获得2场数据的比率

时间:2015-10-28 14:06:08

标签: mysql mysqli

我想从mysql获得2个字段数据的比率

示例我有这些数据:

width  height
1024  | 960
2880  | 1800
1440  | 900

我想得到这些数据的比例(例4:3,16:9等) 所以输出应该是:

width  height
4  | 3
8  | 5
8  | 5

任何人都可以帮助我?

2 个答案:

答案 0 :(得分:2)

然后问题是将一个分数(witdth / height)减少到最简单的形式,在这种情况下我们可以调用一个函数来给我们这两个数字之间的最大公因子分成:

select width, height, width/gcd(width,height) wratio, 
height/gcd(width,height) hratio
from wh

功能gcd:

CREATE FUNCTION gcd(x int, y int) RETURNS int DETERMINISTIC
BEGIN
  DECLARE dividend int;
  DECLARE divisor int;
  DECLARE remainder int;
  SET dividend := GREATEST(x, y);
  SET remainder := LEAST(x, y);

  WHILE remainder != 0 DO
    SET divisor = remainder;
    SET remainder = MOD(dividend, divisor);
    SET dividend = divisor;
  END WHILE;

  RETURN divisor;
END

注意:我在这里找到了gcd函数:http://thenoyes.com/littlenoise/?p=143

sqlfiddle

中测试

答案 1 :(得分:0)

有效:

SELECT * , (
width / IF(height=0,1,height)
) AS ratio
FROM  `my_table` 

但要小心:不要divide by 0

此致

的Stefan