MySQL Math Functions(Các hàm toán học MYSQL)

0
51

MySQL ABS Function

Tổng quan về CUME_DIST() Hàm MySQL

-Đây CUME_DIST()là một hàm cửa sổ trả về phân phối tích lũy của một giá trị trong một tập hợp các giá trị. Nó đại diện cho số hàng có giá trị nhỏ hơn hoặc bằng giá trị của hàng đó chia cho tổng số hàng.

-Giá trị trả về của CUME_DIST()hàm lớn hơn 0 và nhỏ hơn hoặc bằng một (0 CUME_DIST()<<= 1). Các giá trị cột lặp lại nhận cùng một CUME_DIST()giá trị.

-Sau đây là cú pháp của CUME_DIST()hàm:

CUME_DIST() OVER (
	PARTITION BY expr, ...
	ORDER BY expr [ASC | DESC], ...
)

-Trong cú pháp này,   PARTITION BY mệnh đề chia tập kết quả được FROMmệnh đề trả về thành các phân vùng mà CUME_DIST()hàm áp dụng.

-Các ORDER BYđiều khoản quy định cụ thể trình tự logic của các hàng trong mỗi phân vùng hoặc các tập kết quả toàn bộ trong trường hợp PARTITION BYbị bỏ qua. Các CUME_DIST()chức năng tính toán giá trị phân phối tích lũy của mỗi hàng dựa trên thứ tự của nó trong phân vùng đó.

-Công thức gần đúng của CUME_DIST()hàm như sau:

ROW_NUMBER() / total_rows

Ví dụ về hàm CUME_DIST() MySQL

-Hãy tạo một bảng có tên scoresvới một số dữ liệu mẫu để trình diễn:

CREATE TABLE scores (
    name VARCHAR(20) PRIMARY KEY,
    score INT NOT NULL
);

INSERT INTO
	scores(name, score)
VALUES
	('Smith',81),
	('Jones',55),
	('Williams',55),
	('Taylor',62),
	('Brown',62),
	('Davies',84),
	('Evans',87),
	('Wilson',72),
	('Thomas',72),
	('Johnson',100);

-Câu lệnh sau đây tìm phân phối tích lũy trên điểm số trong tập kết quả:

SELECT
	name,
    score,
    ROW_NUMBER() OVER (ORDER BY score) row_num,
    CUME_DIST() OVER (ORDER BY score) cume_dist_val
FROM
	scores;

-Đây là đầu ra:

Ví dụ về hàm CUME_DIST của MySQL

-Trong ví dụ này, điểm số được sắp xếp theo thứ tự tăng dần từ 55 đến 100. Lưu ý rằng ROW_NUMBER()hàm đã được thêm vào để tham khảo.

-Vậy CUME_DIST()hàm thực hiện phép tính như thế nào?

+Đối với hàng đầu tiên, hàm tìm số hàng trong tập kết quả có giá trị nhỏ hơn hoặc bằng 55. Kết quả là 2. Khi đó CUME_DIST()hàm chia 2 cho tổng số hàng là 10: 2/10. kết quả là 0,2 hoặc 20%. Logic tương tự được áp dụng cho hàng thứ hai.

Hàm MySQL CUME_DIST - Hàng đầu tiên

+Đối với hàng thứ ba, hàm tìm số hàng có giá trị nhỏ hơn hoặc bằng 62. Có bốn hàng. Khi đó kết quả của CUME_DIST()hàm là: 4/10 = 0,4 là 40%.

Hàm MySQL CUME_DIST - Hàng thứ ba

-Logic tính toán tương tự được áp dụng cho các hàng còn lại.

MySQL CEIL Function

Tóm tắt : trong hướng dẫn này, bạn sẽ tìm hiểu về CEIL()hàm MySQL .

-Các CEIL()chức năng phải mất một số lượng đầu vào và trả về số nguyên lớn nhỏ hơn hoặc bằng số đó.

-Sau đây là cú pháp của CEIL()hàm:

CEIL (numeric_expression)

-Trong cú pháp này, numeric_expressioncó thể là một số theo nghĩa đen hoặc một biểu thức đánh giá một số.

-Các loại của số lợi nhuận phụ thuộc vào loại số lượng đầu vào. Nếu kiểu của số đầu vào là kiểu số chính xác hoặc kiểu dấu phẩy động, thì kiểu của giá trị trả về tương ứng là kiểu số chính xác hoặc kiểu dấu phẩy động.

-Lưu ý rằng đó CEILING()là một từ đồng nghĩa CEIL()để bạn có thể sử dụng chúng thay thế cho nhau.

Hình ảnh sau đây minh họa CEIL()chức năng:

Hình minh họa hàm MySQL CEIL

Ví dụ về hàm CEIL()MySQL

-Hãy lấy một số ví dụ về việc sử dụng CEIL()hàm.

-Áp dụng CEIL()hàm MySQL cho một số dương

Ví dụ sau đây áp dụng CEIL()hàm cho một số dương:

SELECT CEIL(1.59);

Đây là đầu ra:

MySQL CEIL với số dương

Trong ví dụ này, vì số nguyên nhỏ nhất lớn hơn hoặc bằng số đầu vào là 2 nên CEIL()hàm trả về 2.

-Áp dụng CEIL()hàm MySQL cho một số âm

+Câu lệnh sau đây áp dụng CEIL()hàm cho một số âm:

SELECT CEIL(-1.59);

Kết quả truy vấn như sau:

MySQL CEIL với số âm

Số nguyên nhỏ nhất lớn hơn hoặc bằng -1,59 là -1, do đó, CEIL()hàm trả về -1.

-Sử dụng CEIL()hàm MySQL trong một truy vấn

-Chúng tôi sẽ sử dụng productsbảng từ cơ sở dữ liệu mẫu để trình diễn:

bảng sản phẩm

-Báo cáo sau đây tìm giá bán lẻ đề xuất trung bình của nhà sản xuất (MSRP) của tất cả các sản phẩm theo dòng sản phẩm:

SELECT 
    productLine, 
    CEIL(AVG(msrp)) averageMsrp
FROM
    products
GROUP BY 
    productLine
ORDER BY
    averageMsrp;

Đây là đầu ra:

Ví dụ về hàm CEIL của MySQL

-Trong ví dụ này, đầu tiên, AVG()hàm trả về MSRP trung bình của tất cả các sản phẩm dưới dạng số thập phân. Sau đó, CEIL()hàm trả về MSRP trung bình dưới dạng số nguyên.

MySQL FLOOR Function

-Các FLOOR()chức năng chấp nhận một đối số có thể là số hoặc biểu thức số và lợi nhuận lớn nhất số nguyên  nhỏ hơn hoặc bằng với đối số.

-Sau đây là cú pháp của FLOOR()hàm:

FLOOR(expression)

-Kiểu dữ liệu của giá trị trả về phụ thuộc vào kiểu của số đầu vào. Nếu loại số đầu vào là số chính xác hoặc loại dấu phẩy động, thì loại giá trị trả về tương ứng là số chính xác hoặc loại dấu phẩy động.

-Hình ảnh sau đây minh họa FLOOR()chức năng:

MySQL FLOOR Hàm Minh họa

Áp dụng FLOOR()hàm cho một số dương

+Câu lệnh sau đây áp dụng FLOOR()hàm cho một số dương:

SELECT FLOOR(1.59);
-- 1

+Kết quả là 1 vì nó là số nguyên lớn nhất nhỏ hơn hoặc bằng 1,59

-Áp dụng FLOOR()hàm cho một số âm

Ví dụ sau đây áp dụng FLOOR()hàm cho một số âm.

SELECT FLOOR(-1.59);
-- -2

-Số nguyên lớn nhất nhỏ hơn hoặc bằng -1,59 là 2, do đó, FLOOR()hàm trả về -2.

-Sử dụng FLOOR()hàm trong truy vấn

+Xem productsbảng sau từ cơ sở dữ liệu mẫu :

bảng sản phẩm

-Câu lệnh sau đây cho thấy lượng hàng trung bình cho mỗi dòng sản phẩm:

SELECT 
    productLine, 
    FLOOR(AVG(quantityInStock)) averageStock
FROM
    products
GROUP BY 
    productLine
ORDER BY 
    averageStock;

Đây là đầu ra:

Ví dụ về hàm FLOOR của MySQL

-Vì AVG()hàm trả về giá trị thập phân nên chúng ta cần áp dụng FLOOR()hàm cho kết quả trung bình.

MySQL MOD Function

Cú pháp hàm MOD()

-Các MOD()hàm trả về phần còn lại của một số chia cho nhau. Sau đây là cú pháp của MOD()hàm:

MOD(dividend,divisor)

-Các MOD()chức năng chấp nhận hai đối số:

  • dividend là một số chữ hoặc một biểu thức số để chia.
  • divisor là một số theo nghĩa đen hoặc một biểu thức số để chia cổ tức.

-Các MOD()hàm trả về phần còn lại của cổ tức chia cho số chia. nếu giá divisortrị bằng 0, giá trị MOD(dividend, 0)trả về NULL.

Ví dụ về hàm MOD()

-Ví dụ chức năng đơn giản

+Câu lệnh sau chia số 11 cho 3. Nó trả về 2 là phần nguyên của kết quả:

SELECT MOD(11, 3);

Đây là đầu ra:

Ví dụ đơn giản về hàm MOD của MySQL

-MySQL cho phép bạn sử dụng toán tử modulus (%) là từ đồng nghĩa với MOD()hàm như sau:

SELECT 11 % 3

Đầu ra là:

Ví dụ về toán tử mô-đun hàm MOD của MySQL

-Các MOD()chức năng cũng hoạt động trên các giá trị với một phần phân đoạn và trả phần còn lại sau khi chia. Xem ví dụ sau:

SELECT MOD(10.5, 3);

Hình ảnh sau đây minh họa đầu ra:

Hàm MOD của MySQL - Ví dụ về số thập phân

Sử dụng MOD()hàm trên các cột của bảng

-Chúng tôi sẽ sử dụng orderDetailstừ cơ sở dữ liệu mẫu để trình diễn:

bảng orderdetails

-Câu lệnh sau cho biết số lượng sản phẩm mà khách hàng đã đặt là lẻ hay chẵn.

SELECT 
    orderNumber,
    SUM(quantityOrdered) Qty,
    IF(MOD(SUM(quantityOrdered),2),
        'Odd',
        'Even') oddOrEven
FROM
    orderdetails
GROUP BY 
    orderNumber
ORDER BY
    orderNumber;    

-Trong ví dụ này:

  • Đầu tiên, chúng tôi sử dụng SUM()chức năng để lấy tổng số lượng sản phẩm theo đơn đặt hàng.
  • Sau đó, chúng tôi sử dụng MOD()hàm để tìm phần dư của tổng số lượng chia cho hai. Điều này dẫn đến không hoặc một, tùy thuộc vào vị trí tổng số lượng là chẵn hoặc lẻ.
  • Cuối cùng, chúng tôi sử dụng IF()hàm để hiển thị chuỗi Oddvà Evendựa trên kết quả của MOD()hàm.

-Đây là đầu ra:

Ví dụ về hàm MOD của MySQL

MySQL ROUND Function

Giới thiệu về hàm ROUND()

-Đây ROUND()là một hàm toán học cho phép bạn làm tròn một số đến một số chữ số thập phân được chỉ định.

-Sau đây là cú pháp của ROUND()hàm:

ROUND(n,[d])

-Trong cú pháp này, nlà một số được làm tròn và dlà số chữ số thập phân mà số được làm tròn.

-Số vị trí thập phân ( d) là tùy chọn. Nó mặc định là 0 nếu bạn bỏ qua nó.

-Các câu sau đây là tương đương:

SELECT ROUND(20.5);
-- 21
SELECT ROUND(20.5, 0);
-- 21

-Số vị trí thập phân ( d) có thể là số dương hoặc số âm. Nếu nó là số âm, thì các dchữ số bên trái dấu thập phân của số đó nsẽ trở thành số không.

SELECT ROUND(121.55,-2)
-- 100

-Các ROUND()chức năng trả về một số trong đó có cùng một kiểu dữ liệu như số được làm tròn (n)

Quy tắc làm tròn số giá trị chính xác

-Nếu n là một số có giá trị chính xác, ROUND()hàm sử dụng quy tắc “làm tròn về phía gần nhất”.

-Nó có nghĩa là giá trị của phần phân số từ .5 trở lên được làm tròn thành số nguyên tiếp theo nếu dương hoặc làm tròn xuống số nguyên tiếp theo nếu âm.

SELECT ROUND(10.5); 
-- 11
SELECT ROUND(10.6); 
-- 11

SELECT ROUND(-10.5); 
-- -11
SELECT ROUND(-10.6);
-- -11

-Giá trị của phần nhỏ hơn 0,5 được làm tròn xuống số nguyên tiếp theo nếu dương hoặc lên đến số nguyên tiếp theo nếu âm.

SELECT ROUND(10.4);
-- 10
SELECT ROUND(-10.4);
-- -10

Quy tắc làm tròn số giá trị gần đúng

-Khi làm tròn một số giá trị gần đúng, kết quả của ROUND()hàm phụ thuộc vào thư viện C. Thông thường, nó sử dụng quy tắc “làm tròn đến chẵn gần nhất”, tức là nó làm tròn một giá trị với một phần phân số nằm chính xác giữa hai số nguyên đến số nguyên chẵn gần nhất.

Ví dụ về hàm ROUND() MySQL

-Chúng tôi sẽ sử dụng orderDetailsbảng từ cơ sở dữ liệu mẫu để trình diễn.

-Câu lệnh sau đây tìm các giá trị trung bình của mục hàng đặt hàng theo mã sản phẩm:

SELECT 
    productCode,
    AVG(quantityOrdered * priceEach) avg_order_item_value
FROM
    orderDetails
GROUP BY 
    productCode;    

Đây là đầu ra:

MySQL ROUND - không sử dụng hàm ROUND

-Giá trị đặt hàng trung bình của sản phẩm không chính xác vì nó chứa nhiều số sau dấu thập phân.

-Đối với các giá trị trung bình, số sau dấu thập phân có thể không quan trọng. Do đó, bạn có thể sử dụng ROUND()hàm để làm tròn chúng đến 0 vị trí thập phân như được hiển thị trong truy vấn sau:

SELECT 
    productCode,
    ROUND(AVG(quantityOrdered * priceEach)) avg_order_item_value
FROM
    orderDetails
GROUP BY 
    productCode;    

-Hình ảnh sau đây cho thấy đầu ra:

MySQL ROUND - giá trị trung bình làm tròn

MySQL TRUNCATE Function

Tóm tắt : trong hướng dẫn này, bạn sẽ học cách sử dụng TRUNCATE()hàm MySQL để cắt ngắn một số thành một số chữ số thập phân được chỉ định.

TRUNCATE(X,D)

-Trong cú pháp này:

  • X là một số theo nghĩa đen hoặc một biểu thức số được cắt bớt.
  • Dlà số vị trí thập phân cần cắt bớt. Nếu Dlà số âm thì TRUNCATE()hàm làm cho các Dchữ số bên trái dấu thập phân của Xtrở thành số không. Trong trường hợp Dbằng 0, thì giá trị trả về không có dấu thập phân.

-Cả hai Xvà Dđối số là bắt buộc.

-Chú ý rằng TRUNCATE()hàm tương tự như ROUND()hàm giảm số chữ số thập phân. Tuy nhiên, TRUNCATE()hàm không thực hiện bất kỳ làm tròn nào như ROUND()hàm thực hiện.

1) Sử dụng MySQL TRUNCATE()với ví dụ về số vị trí thập phân dương

Xem ví dụ sau:

SELECT TRUNCATE(1.555,1);

Đây là đầu ra:

Hàm TRUNCATE trong MySQL - số vị trí thập phân dương

Vì số vị trí thập phân là 1 nên TRUNCATE()hàm chỉ giữ 1 vị trí thập phân trong giá trị trả về.

2) Sử dụng MySQL TRUNCATE()với ví dụ về số vị trí thập phân âm

Ví dụ sau đây cho thấy cách áp dụng TRUNCATE()hàm với một số vị trí thập phân âm:

SELECT
    TRUNCATE(199.99,-2)

Đầu ra là:

Hàm TRUNCATE trong MySQL - số vị trí thập phân âm

3) MySQL TRUNCATE()vs.ROUND()

Ví dụ sau sử dụng cả hàm TRUNCATE()và ROUND()để so sánh:

SELECT 
    TRUNCATE(1.999,1), 
    ROUND(1.999,1);

Đây là kết quả truy vấn:

Ví dụ về hàm TRUNCATE của MySQL

Như được hiển thị rõ ràng trong đầu ra, TRUNCATE()hàm chỉ cắt bớt các chữ số thập phân trong khi ROUND()hàm thực hiện làm tròn.

Các Hàm còn Lại

ACOS (n)Trả về cosin cung của n hoặc null nếu n không nằm trong phạm vi -1 và 1.
ASIN (n)Trả về arcsine của n là giá trị có sin là n. Nó trả về null nếu n không nằm trong phạm vi -1 đến 1.
ATAN ()Trả về arctang của n.
ATAN2 (n, m), ATAN (m, n)Trả về arctang của hai biến n và m
CONV (n, from_base, to_base)Chuyển đổi một số giữa các cơ số khác nhau
COS (n)Trả về cosine của n, trong đó n tính bằng radian
COT (n)Trả về cotang của n.
CRC32 ()Tính toán giá trị kiểm tra dự phòng theo chu kỳ và trả về giá trị không dấu 32 bit
DEGREES (n)Chuyển đổi radian thành độ của đối số n
EXP (n)Tăng lên lũy thừa của e nâng lên lũy thừa n
LN (n)Trả về lôgarit tự nhiên của n
LOG (n)Trả về lôgarit tự nhiên của đối số đầu tiên
LOG10 ()Trả về logarit cơ số 10 của đối số
LOG2 ()Trả về logarit cơ số 2 của đối số
SỐ PI()Trả về giá trị của PI
POW ()Trả về đối số được nâng lên thành lũy thừa được chỉ định
QUYỀN LỰC()Trả về đối số được nâng lên thành lũy thừa được chỉ định
RADIANS ()Trả về đối số được chuyển đổi thành radian
RAND ()Trả về một giá trị dấu phẩy động ngẫu nhiên
SIGN (n)Trả về dấu của n có thể là -1, 0 hoặc 1 tùy thuộc vào việc n là âm, 0 hay dương.
SIN (n)Trả về sin của n
SQRT (n)Trả về căn bậc hai của n
TAN (n)Trả về tang của n

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây