遇到的問題----sql語句中用sum()函式輸出為null
在SQL語句中使用集合函式count(),返回結果肯定為非負整數,這也是用來判斷資料有無的一個很有效的方法;
然後在用sum()進行集合相加的時候,如果sum()的物件沒有記錄,那麼不會返回0,而返回null,這麼做,不會影響資料庫,因為數值型欄位也是可以存放NULL的,因為在執行這樣的SQL語句的時候,沒有記錄也不會報錯。
但是執行完之後,要使用這個資料就有問題了。
1、在程式裡處理的時候,比如進行四則運算或其他的強型別轉換的時候,就會提供型別不正確或是與其它資料相加得到的結果變成NULL,因為NULL+number= Null。
2、統計的結果的SQL語句中有其它的運算,同1的最後一種情況,Null+ number = Null。就會把其它的有效資料也抹殺掉了。
解決方法:
1、使用isnull()方法進行判斷,如isnull(sum(cnt),0),其中0為預設值,如果sum(cnt)的結果為null,則賦值 0;同理此方法可用於某欄位,isnull(cnt,0),這樣就可以排除一些值為null的數值型欄位了。而如果這樣 isnull(sum(isnull(cnt,0)),0),這樣就可保萬無一失了。
2、使用case when else流程控制語句,如可以用"case when sum(cnt) is null then 0 else sum(cnt) end"來代替sum(cnt),其中0同上一條的意義相同。
另外求平均函式avg() 也是一樣的情況,相同的解決辦法
用isnull函式解決:isnull(sum(刷卡金額),0)
相關推薦
遇到的問題----sql語句中用sum()函式輸出為null
在SQL語句中使用集合函式count(),返回結果肯定為非負整數,這也是用來判斷資料有無的一個很有效的方法; 然後在用sum()進行集合相加的時候,如果sum()的物件沒有記錄,那麼不會返回0,而返回null,這麼做,不會影響資料庫,因為數值型欄位也是可以存放NULL的,因為在執行這樣的SQL語句的時候
SQL語句中SUM函式返回NULL的解決辦法
SUM 是SQL語句中的標準求和函式,如果沒有符合條件的記錄,那麼SUM函式會返回NULL。 但多數情況下,我們希望如果沒有符合條件記錄的情況下,我們希望它返回0,而不是NULL,那麼我們可以使用例如下面的方法來處理: SELECT COALESCE(SUM(name),0
SQL語句中SUM函式
在工作中有兩個sum的求和函式相加的時候如果其中一個是null那麼相加的結果也是null,所以相加之前要用nvl處理下 例如: select sum(a.create_staff) from dp.t_spec_steet a where a.sheet_id=1154查出
關於SQL語句中SUM函式返回NULL的解決辦法
在SQL語句中使用集合函式count(),返回結果肯定為非負整數,這也是用來判斷資料有無的一個很有效的方法; 然後在用sum()進行集合相加的時候,如果sum()的物件沒有記錄,那麼不會返回0,而返回null,這麼做,不會影響資料庫,因為數值型欄位也是可以存放NULL的
SUM 是SQL語句中的標準求和函式,如果沒有符合條件的記錄,那麼SUM函式會返回NULL。但咱們想返回的是0而不是Null
但多數情況下,我們希望如果沒有符合條件記錄的情況下,我們希望它返回0,而不是NULL,那麼我們可以使用例如下面的方法來處理: SELECT COALESCE(SUM(field1),0) FROM ta
[Oracle]高效的SQL語句之分析函式(一)--sum()
select deptno, ename, sal, --按照部門薪水累加(order by改變了分析函式的作用,只工作在當前行和前一行,而不是所有行)sum(sal) over (partition by deptno orderby sal) CumDeptTot,
Sql語句中用別名作判斷條件
當我們使用某個表示式作為輸出的一列時,我們無法再Where條件中直接使用該列作判斷條件. 例如下面的SQL語句: select id, (c1 + c2) as s from t1 
sql語句字串處理函式
函式 database() 查詢當前所使用的資料庫名 user() 或 current_user() 查詢當前使用者 version() 或 @@version 檢視當前資料庫的版本 文字處理函式 eg: mysql> SELECT LEFT('
mysql 語句中 sum函式求和 null 變 0
在SQL語句中使用集合函式count(),返回結果肯定為非負整數,這也是用來判斷資料有無的一個很有效的方法; 然後在用sum()進行集合相加的時候,如果sum()的物件沒有記錄,那麼不會返回0,而返回null,這麼做,不會影響資料庫,因為數值型欄位也是可以存放NULL的,因
T-SQL 語句——自定義函式
CREATE FUNCTION fn_chinese_week_day(@week_day INT) -- RETURNS NVARCHAR(3) BEGIN DECLARE @w INT SET @w = @week_day % 7 RETURN CASE @w
SQL語句count統計函式Echarts展示資料資訊
count統計非空 進行對資料表中的某一個屬性的查詢和統計,運用group by進行分組後,使用count進行統計。 比如,通過統計下面表中的學時資訊。 使用瞭如下的SQL語句: select trainHo
php 伺服器端解決json_decode()的bug 輸出為null, json_last_error函式為4語法錯誤
php 伺服器端解決json_decode() bug 問題: 問題描述: json_decode() 轉換json字串時輸出結果為 null,函式返回值為false 出現問題的分析: 1
SQL SERVER 利用字串函式輸出菱形圖案
declare @count int; set @count=1; while @count<6 begin print space(5-@count)+replicate('#',@coun
SQL語句查詢時有欄位為中文時的解決方法
我在寫JDBC的是時候,遇見了因為在SQL語句中含有中文無法執行的情況,於是我把這句話放到mysql客戶端中測 試,結果通過,我就估計不是字元編碼問題,是PreparedStatement這個介面做了一些我不知道的處理導致這個問題的 發生。而且一般直接使用?問號代替動態查詢要求,而在客戶端中必須加上雙引號,
使用mysql sum統計函式 結果為null時返回值改為0
//查詢定時任務是否存在 public Integer getPetTime(HomePetTime homePetTime){ Integer result = 0; ConnectionDB util = new ConnectionDB(); Objec
SQL語句中sum與count的區別
表fruitid name price1 apple 1.002 pear 4.00select count(price) from fruit; ----執行之後結果為:2 (表示有2條記錄)select sum(price) from fruit;--
SQL語句中SUM列出前面行的和
題目:已知資料庫 表名:Job 結構如下: ID DAY TOTALSALES 1 5 40 2 4 50 3 10 10 4 16 20 5 2 30 ... ... 通過SQL
使用sql語句直接生成dataset做為水晶報表的資料來源
使用sql語句直接生成dataset做為報表的資料來源(即push模式),這樣就可以接受引數了。當然報表有設定引數的功能 這方面我還沒有詳細研究 一.sql語句中沒有使用表的相互關聯(簡單的查詢語句) 設計一個DataSet 1) 右擊“解決方案瀏覽器”,選
SQL語句中MAX()函式和MIN()函式
MAX 函式返回一列中的最大值。NULL 值不包括在計算中。 SELECT MAX(column_name) FROM table_name 註釋:MIN 和 MAX 也可用於文字列,以獲得按字母
SQL---count()函式結果為null時替換為0
在sql中,做count()統計時,如果結果為null,這條資料是不顯示的,但是經常會有類似的需求,比如:統計江西省下的某11個市的企業數量,如果有些城市企業數量為0,會發現最後返回的結果不到11條。