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

การหาผลรวม 3 หลักสุดท้ายของตัวเลขในคอลัมน์ด้วย RIGHT() และ SUM() ใน MySQL

ใช้ RIGHT() ดึง 3 หลักสุดท้าย แล้ว SUM() รวมกัน

สร้างตารางตัวอย่าง

mysql> create table DemoTable ( 
    Code int ); 
Query OK, 0 rows affected (0.77 sec)

เพิ่มข้อมูลตัวอย่าง

mysql> insert into DemoTable values(5464322); Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values(90884); Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(23455644); Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values(4353633); Query OK, 1 row affected (0.11 sec)

แสดงข้อมูลทั้งหมด

mysql> select *from DemoTable;
+----------+
| Code     |
+----------+
|  5464322 |
|   90884  |
| 23455644 |
| 4353633  |
+----------+
4 rows in set (0.00 sec)

คิวรี่หาผลรวม 3 หลักสุดท้าย

mysql> select sum(right(Code,3)) AS SumOfLast3Digit from DemoTable;

ผลลัพธ์:

+-----------------+
| SumOfLast3Digit |
+-----------------+
|            2483 |
+-----------------+
1 row in set (0.00 sec)

คำอธิบายการคำนวณ

CodeRIGHT(Code, 3)ค่า
5464322'322'322
90884'884'884
23455644'644'644
4353633'633'633
รวม2483

คำอธิบายฟังก์ชัน

  • RIGHT(str, len) - ดึงตัวอักษร len ตัวจากขวาสุด (คืนค่า String)
  • MySQL แปลง String เป็น Number อัตโนมัติในบริบทคณิตศาสตร์
  • SUM() รวมค่าตัวเลขทั้งหมด

กรณีข้อมูลเป็น VARCHAR (มี Leading Zeros)

SELECT SUM(CAST(RIGHT(code, 3) AS UNSIGNED)) FROM DemoTable;

ขยาย: หา 3 หลักแรก (LEFT)

SELECT SUM(CAST(LEFT(Code, 3) AS UNSIGNED)) FROM DemoTable;

กรณีต้องการ Modulo 1000 (ทางคณิตศาสตร์)

SELECT SUM(Code % 1000) FROM DemoTable;

วิธีนี้เร็วกว่าและไม่ต้องแปลงชนิดข้อมูล