1. 程式人生 > >Mysql中關於聚合函式sum()最新的認識

Mysql中關於聚合函式sum()最新的認識

最近開發後臺介面的時候,需要做一個統計查詢,使用到sum()函式,資料庫中的表是以前已經設計好的,並且要進行統計查詢的那張表在其他一些介面中已經使用,mysql的版本是5.5.28,這是背景。

當寫介面寫sql語句時,才發現需要用sum()函式統計的那個欄位在表中設計好的資料型別是varchar型別,由於對聚合函式sum()認識不深,本以為直接統計會報錯,語句如下:

SELECT SUM(file_size) FROM res_material

但執行正常,上網搜尋時看到了這麼一句話“如果varchar型別中存放的都是數字,需要看是什麼資料庫,如果是sqlserver那麼可將字元轉成數字再進行sum,如果是oracle,則可隱形轉換成數字,無需修改語句”。雖然沒有搜尋到關於mysql中sum()函式也有隱形轉化的特點,但我使用的是Mysql,如上文所示我沒有在語句中加上cast()轉換型別的函式,執行結果依然正確,這應該能夠說明在mysql中的sum()函式與oracle一樣也有隱形轉化的特點(還需要學習)。

另外,經過測試,如果統計欄位中有的值不是數字,那麼也不會報錯,sum()函式只統計數字行。

且當語句加上cast()函式時,統計結果依然正確:

SELECT SUM(CAST(file_size AS DECIMAL(10,2))) AS file_size FROM res_material

補充一點:MySql sum(A+B)和sum(A)+sum(B)的區別 :

1.如果欄位A和欄位B的值都不為NULL,則以上兩種情況一樣

2.如果其中有一個欄位的值為NULL則sum(A+B)的值為NULL

學習中,如有不正確或不準確的地方,請多指正,謝謝

相關推薦

Mysql關於聚合函式sum()最新認識

最近開發後臺介面的時候,需要做一個統計查詢,使用到sum()函式,資料庫中的表是以前已經設計好的,並且要進行統計查詢的那張表在其他一些介面中已經使用,mysql的版本是5.5.28,這是背景。 當寫介面寫sql語句時,才發現需要用sum()函式統計的那個欄位在表中設計好的

MySQL聚合函式count的注意事項

MySQL中有很多函式,包括字串函式、數值執行函式、日期時間函式、聚合函式、加密函式等,這些函式可對SQL語句中的欄位進行處理,但在這裡主要講一下聚合函式count的使用場景。 我們知道,這個函式是用

mysql聚合函式條件

有個需求,某張表,有個狀態欄位(1:成功,2:失敗,類似這樣的),現要用日期分組統計不同狀態下的數量 先寫了個子查詢: select aa.logDate,aa.totalLogs  ,(select count(1) from dxp.dxp_handlermodel

MySQL聚合函式count的使用和效能優化

本文的環境是Windows 10,MySQL版本是5.7.12-log 一、 基本使用 count的基本作用是有兩個: 統計某個列的資料的數量; 統計結果集的行數; 用來獲取滿足條件的資料的數量。但是其中有一些與使用中印象不同的情況,比如

MySQL聚合函式的使用

1.count()函式的使用(1)count(*) 表示計算表中總的行數,不管某列是否有數值或者是為空;    SELECT  COUNT(*)  FROM +TABLE_NAME;(2)count(欄位名稱) 表示計算指定列下總的行數,計算式將忽略空值;    SELECT

mysqlcount函式sum函式的用法

mysql中用於統計的二個函式,而這二個函式通常和group by分組函式配合使用 一、count(*)是統計每一組有多少行 count(*)是將返回表格中所有存在的行的總數包括值為null的行。然而count(列名)將返回表格中除去null以外的所有行的總數(有預設值的

Django聚合函式,F表示式和Q表示式詳解

學習聚合函式的準備工作 新建一個專案,在新建一個app,名字隨意,然後在app中的models中定義幾個模型: from django.db import models # Create your models here. class Author(models.Model):

mysql set函式的用法

mysql 中set函式的用法 :當值為空時不進行賦值 update user_user <set> <if test="nickname!=null and nickname!='' "> user_user.nickn

時間篩選查詢小於加一天 mysql date_add 函式

SELECT y.totalIntegral totalIntegral, y.availableIntegral AS availableIntegral, y.CreateDate as CreateDate FROM ( SELECT a.Money AS to

MySQL日期函式的使用

1. MySQL中的日期函式 1.1. 轉DATETIME型別為Date型別 將add_time=2013-01-12 23:23:56轉化為date型別 select * from product where Date(add_time) = '2013-01-12' 1.2. 獲

MYSQL一些函式使用

mysql中函式使用說明,持續更新中...,在使用過程中覺得可以用例子說明的話直接就簡述,希望大家可以補充說明☺ 1.CONCAT:拼接字元的 可以看出這裡concat將所有字元都拼接在一起,但是沒有分隔符,不能先詳細知道是由幾個字元拼接的。【注】當包含null時,查詢結果為null;但是可

MySQL函式

在MySQL中函式分為兩類,系統函式(內建函式)和自定義函式 不管是內建函式還是使用者自定義函式,都是使用select 函式名(引數列表) 內建函式 字串函式 char_length():判斷字串的字元數 length():判斷字串的位元組數(與字符集)

mysql8基礎 聚合函式 sum 求和

資料,資料,命根就在資料 ! 操作資料庫時,一定要謹慎小心。師萬物 的程式碼看看就好,要有自己的判斷。遇到抉擇,要不恥上下問。 example stu@Ubuntu:~$ mysql -u root -p Enter password: Welcom

MySQLgroup_concat()函式的排序方法

group_concat()函式的引數是可以直接使用order by排序的。666。。下面通過例子來說明,首先看下面的t1表。 比如,我們要檢視每個人的多個分數,將該人對應的多個分數顯示在一起,分數要從高到底排序。可以這樣寫: SELECT username,GROU

MySQL聚合函式查詢

本文主要介紹一些關於聚合函式查詢的語句。 create table `t_grade` ( `id` int , `stuName` varchar (60), `course` varchar

MySQL 函式--------日期函式,字串函式,數學函式,一些其他函式

函式 日期函式 字串函式 數學函式 其他函式 日期函式 函式名稱 描述 current_da

MYSQLcoalesce函式的用法

coalesce():返回引數中的第一個非空表示式(從左向右依次類推); 例如: select coalesce(null,4,5); // 返回4 select coalesce(null,null,3); // 返回3 select coalesce(1,2,3); // 返回1

MySQLGROUP_CONCAT函式長度限制處理/實現行轉列的功能

MySQL提供了一個很方便的函式group_concat可以實現行轉列的功能。 SELECT t.*, (SELECT GROUP_CONCAT(fellow_company_id) v1 FROM t_trade_fellow a WHERE fellow_type = '1' AND a.company_

MySQLgroup_concat函式深入理解

MySQL中group_concat函式 完整的語法如下: group_concat([DISTINCT] 要連線的欄位 [Order BY ASC/DESC 排序欄位] [Separator '分隔符']) 功能:把多條記錄拼成一條。 1.基本查詢 mysql&

MySQLgroup_concat函式,用符號連線查詢分組裡欄位值

MySQL中group_concat函式 完整的語法如下: group_concat([DISTINCT] 要連線的欄位 [Order BY ASC/DESC 排序欄位] [Separator '分隔符']) 基本查詢 mysql> select * from aa;