Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

หาความต่างสัมบูรณ์ (Absolute Difference) ระหว่าง 2 ตัวเลขใน MySQL ด้วย ABS()


คำสั่งหลัก

ใช้ฟังก์ชัน ABS() คืนค่าสัมบูรณ์ (ค่าบวกเสมอ) ของผลลัพธ์การลบ

รูปแบบคำสั่ง

SELECT ABS(FirstNumber - SecondNumber) AS diff 
FROM yourTable 
ORDER BY diff DESC;

ตัวอย่างครบถ้วน

1. สร้างตาราง

mysql> create table findDifferenceDemo 
    -> ( 
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    -> FirstNumber float, 
    -> SecondNumber float 
    -> ); 
Query OK, 0 rows affected (0.60 sec)

2. เพิ่มข้อมูล

mysql> insert into findDifferenceDemo(FirstNumber,SecondNumber) values(4.2,2.3); 
Query OK, 1 row affected (0.20 sec)
mysql> insert into findDifferenceDemo(FirstNumber,SecondNumber) values(23.4,5.6); 
Query OK, 1 row affected (0.14 sec)
mysql> insert into findDifferenceDemo(FirstNumber,SecondNumber) values(5.8,34.56); 
Query OK, 1 row affected (0.16 sec)
mysql> insert into findDifferenceDemo(FirstNumber,SecondNumber) values(7.8,7.2); 
Query OK, 1 row affected (0.16 sec)
mysql> insert into findDifferenceDemo(FirstNumber,SecondNumber) values(12.8,10.2); 
Query OK, 1 row affected (0.13 sec)

3. ดูข้อมูล

mysql> select * from findDifferenceDemo;
+----+-------------+--------------+
| Id | FirstNumber | SecondNumber |
+----+-------------+--------------+
| 1  | 4.2         | 2.3          |
| 2  | 23.4        | 5.6          |
| 3  | 5.8         | 34.56        |
| 4  | 7.8         | 7.2          |
| 5  | 12.8        | 10.2         |
+----+-------------+--------------+

4. หาความต่างสัมบูรณ์ เรียงมากไปน้อย

mysql> SELECT ABS(FirstNumber - SecondNumber) AS diff 
    -> from findDifferenceDemo 
    -> order by diff desc;
+--------------------+
| diff               |
+--------------------+
| 28.760001182556152 |
| 17.799999713897705 |
| 2.6000003814697266 |
| 1.8999998569488525 |
| 0.6000003814697266 |
+--------------------+

การคำนวณย้อนกลับ (Verification)

IdFirstSecondFirst-SecondABS
35.834.56-28.7628.76 ✓
223.45.617.817.8 ✓
512.810.22.62.6 ✓
47.87.20.60.6 ✓
14.22.31.91.9 ✓

ประยุกต์ใช้: หาคู่ที่ใกล้เคียงที่สุด

SELECT *, ABS(target_value - column_value) AS distance
FROM measurements
ORDER BY distance ASC
LIMIT 5;

ฟังก์ชันคณิตศาสตร์ที่เกี่ยวข้อง

  • ABS(x) - ค่าสัมบูรณ์
  • CEIL(x) / CEILING(x) - ปัดขึ้น
  • FLOOR(x) - ปัดลง
  • ROUND(x, d) - ปัดทศนิยม
  • SIGN(x) - -1, 0, 1
  • SQRT(x) - รากที่สอง

หมายเหตุ: FLOAT มีความแม่นยำจำกัด (approx 7 digits) สำหรับการคำนวณเงิน/การเงิน ควรใช้ DECIMAL