Navicat 部落格

一些有用的 MySQL 數值函式 2022 年 2 月 18 日,由 Robert Gravelle 撰寫

早在 2021 年 5 月,我們就探討了 SQL Server 的重要的 SQL Server 函式。現在,是時候將注意力轉向 MySQL,看看它面為我們提供了什麼數學和數值函式。為了了解它們在實踐中是如何工作的,我們將在 Navicat 16 for MySQL 中執行的查詢中使用它們。

比較 SQL Server 和 MySQL 函式

重要的 SQL Server 函式文章中,我們講解了 Abs、Round、Ceiling 和 Floor 函式。事實證明,MySQL 不僅實作了這些函式,而且使用了完全相同的名稱。也許這並不奇怪,因為這些是資料庫產品和程式設計語言的基本數值函式。

由於這些函式在兩個 DBMS 中是相同的,因此重新講述它們如何使用是沒有意義的。相反,我們將繼續探索 MySQL 中其他有用的數值函式。

AVG

你可能已經知道平均值或算術平均值是什麼。你甚至可能知道,它是透過將資料集中的所有值相加,然後將該結果除以該資料集中資料點數量來計算的。因此,如果我們有五個數值,例如 4、5、6、5、3,我們將按如下方式計算它們的平均值:

(4 + 5 + 6 + 5 + 3) / 5 = 4.6

這個方法計算少量數值非常簡單,但是當你有 10,000 列時會發生什麼呢?答案或者說當然是使用 MySQL 的內建 AVG 函式(順便說一句,此函式在 SQL Server 中的名稱是相同)。我們需要做的就是為它提供一個數值運算式,它就會傳回其平均值。以下是它的簡單語法:

AVG(expression)

大多數情況下,你會輸入一個你想要計算其平均值的欄名稱。例如,這裡有一個査詢,為我們提供了 Sakila 範例資料庫中所有電影的平均片長:

avg (84K)

GROUP BY 根據 category_id 對值進行細分,以便計算的平均值是以每種電影類型為基礎,即「Action」、「Drama」等。

透過將 AVG 函式的結果傳遞給 ROUND,我們可以去除一些額外的小數位。

一個更複雜的範例

數值函式的有趣之處在於,它們可以作為更大計算的一部分使用。舉個例子,這裡有一個査詢,顯示有哪些電影類別的電影更換成本和租金之間的平均差額大於 17 美元:

avg_replacement_cost (104K)

計算更換成本可以從平均更換成本中減去平均租金。這不需要臨時變數,只需從一個函式中減去另一個函式的結果:

( AVG( replacement_cost ) - AVG( rental_rate ) ) AS replace_sub_rental

MIN 或 MAX

你注意到很多數值函式的名字都是三個字母嗎?我不知道為什麼會這樣,但這裡有兩個相關函式用於計算資料集的最小值和最大值。同樣,最典型的用法是將欄名稱傳遞給函式。以下查詢根據 rental_date 欄選擇最初和最後出租的電影詳細信息。因此,它被傳遞給 MIN 和 MAX 函式:

min_max (73K)

混合使用彙總函式和純量資料可能會出現問題,因此會在子査詢中擷取 MIN 和 MAX rent_dates,以便與每個 Film 資料表列的 rental_dates 進行比較。

總結

本文使用了 Navicat 16 for MySQL 作為資料庫用戶端介紹 MySQL 中的一些有用的數值函式,包括 AVG、MIN 和 MAX。說到這裡,如果你想試用 Navicat 16 for MySQL,你可以在這裡下載 14 天試用版。

Navicat 文章
頻道記錄
分享
部落格封存檔