重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設、域名注冊、服務器等服務
為企業(yè)提供網(wǎng)站建設、域名注冊、服務器等服務
寫一條sql語句就能解決了:
創(chuàng)新互聯(lián)專注于南海企業(yè)網(wǎng)站建設,自適應網(wǎng)站建設,成都商城網(wǎng)站開發(fā)。南海網(wǎng)站建設公司,為南海等地區(qū)提供建站服務。全流程按需制作網(wǎng)站,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務
select?sum(貸款總金額字段名)?from?tablename?where?貸款部門字段='張西堡信用社';
2020-03-01
對于count的函數(shù)的使用,我們常見的一個錯誤是在括號內(nèi)隨意指定一個列去統(tǒng)計結果集的行數(shù)。但只有指定的行確實都是有值的時候,統(tǒng)計的才是實際的行數(shù),否則可能統(tǒng)計的結果并不是實際的行數(shù)。而對于MyISAM存儲引擎,如果某一列的值確實不可能為null時,MySQL內(nèi)部就會將count()函數(shù)優(yōu)化成count(*),若沒有帶where條件,此時計算速度是非常快的,因為此時沒有實際的去計算表的行數(shù)。
總結: 對于MyISAM存儲引擎,不帶where條件的count(*)是非常快的。
技巧:
利用上述MyISAM的count(* )特性,加速一些特定查詢條件的count()查詢。
如:
對于select count(* ) from tablename where id 10; 可以做如下的反轉查詢:
select (select count(* ) from tablename) - count(* ) from tablename where id 10;
因為這樣在查詢階段MySQL將子查詢當做一個常數(shù)來處理,大大減少了掃描的行數(shù)。
selecti.uid,sum(ifnull(deposit,0)+ifnull(ddeposit,0)+ifnull(money,0))asallmoney
frompw_memberinfoileftjoinpw_membersmonm.uid=i.uidleftjoinpw_memberdatadoni.uid=d.uid
whereifnull(deposit,0)+ifnull(ddeposit,0)+ifnull(money,0)2000;
題主這個問題可以通過以idz和a這兩個字段分組匯總獲得。下面是具體的sql語句供參考:
select a,sum(b) as totalQty
from tblName where idz=10
group by idz,a;
注意idz如果不是數(shù)字則篩選10要對其加單引號
SELECT SUM(CASE `支付狀態(tài)` WHEN 2 THEN `支付金額` ELSE 0 END)
,SUM(CASE `支付狀態(tài)` WHEN 2 THEN 1 ELSE 0 END)
,SUM(CASE `支付狀態(tài)` WHEN 1 THEN `支付金額` ELSE 0 END)
,SUM(CASE `支付狀態(tài)` WHEN 1 THEN 1 ELSE 0 END)
FROM `訂單`
這個SQL的結果是這個樣子,4個數(shù)字表示成功金額、成功筆數(shù)、失敗金額、失敗筆數(shù)
123.45 11 2345.67 222
也可以用這樣的簡單SQL語句統(tǒng)計:
SELECT `支付狀態(tài)`, COUNT(*), SUM(`支付金額`) FROM `訂單`
結果為兩行,分別是成功的筆數(shù)和金額、失敗的比如和金額,例如是這樣:
1 11 123.45
2 22 2345.67