校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 在SQL中對同一個字段不同值,進(jìn)行數(shù)據(jù)統(tǒng)計操作

在SQL中對同一個字段不同值,進(jìn)行數(shù)據(jù)統(tǒng)計操作

熱門標(biāo)簽:湖南人工外呼系統(tǒng)多少錢 信陽穩(wěn)定外呼系統(tǒng)運營商 日照旅游地圖標(biāo)注 南通自動外呼系統(tǒng)軟件 百度地圖圖標(biāo)標(biāo)注中心 石家莊電商外呼系統(tǒng) 芒果電話機(jī)器人自動化 廣東人工電話機(jī)器人 申請外呼電話線路

應(yīng)用場景: 需要根據(jù)印章的不同狀態(tài),統(tǒng)計不同狀態(tài)下印章數(shù)量。

剛開始百度,確實寫搜到了不同的答案,但只能怪自己對sql語法解讀不夠,還是沒寫出來,導(dǎo)致寫出了下面錯誤的寫法。

select b.corporateOrgName, b.corporateOrgGuid companyId,
count(case when bc.ftype not in(1,2) then 1 else 0 end ) total,
count(case when bc.ftype in(3,4,5) then 1 else 0 end ) usetotal,
count(case when bc.ftype = 6 then 1 else 0 end ) saveTotal,
count(case when bc.ftype = 7 then 1 else 0 end ) returnTotal
from B_seal_cycle bc
join B_seal b
on bc.sealId = b.id
where b.corporateOrgName like '%%'
group by b.corporateOrgName,b.corporateOrgGuid

邏輯上通了,可就是怎么都得不到理想的接口,這樣寫統(tǒng)計的每一個數(shù)據(jù)都一樣呀。改變之后的正確寫法

select b.corporateOrgName, b.corporateOrgGuid companyId,
count(case when bc.ftype not in(1,2) then 1 end ) total,
count(case when bc.ftype in(3,4,5) then 1 end ) usetotal,
count(case when bc.ftype = 6 then 1 end ) saveTotal,
count(case when bc.ftype = 7 then 1 end ) returnTotal
from B_seal_cycle bc
join B_seal b
on bc.sealId = b.id
where b.corporateOrgName like '%%'
group by b.corporateOrgName,b.corporateOrgGuid

你看出不同之處了嘛? 把else 0 去掉就得到了正確的結(jié)果。

遇到的問題

1、 對case when 語法,解讀有誤。

加了else 之后,總會對結(jié)果取 1 或 0.

2、 count函數(shù)都會對不管1 或 0 進(jìn)行統(tǒng)計。

3、 當(dāng)加了else 0 之后,可以通過sum函數(shù)進(jìn)行統(tǒng)計。

也可以這樣寫

select b.corporateOrgName, b.corporateOrgGuid companyId,
sum(case when bc.ftype not in(1,2) then 1 else 0 end ) total,
sum(case when bc.ftype in(3,4,5) then 1 else 0 end ) usetotal,
sum(case when bc.ftype = 6 then 1 else 0 end ) saveTotal,
sum(case when bc.ftype = 7 then 1 else 0 end ) returnTotal
from B_seal_cycle bc
join B_seal b
on bc.sealId = b.id
where b.corporateOrgName like '%%'
group by b.corporateOrgName,b.corporateOrgGuid

有問題,或者有更好的寫法,感謝留言指出。

補(bǔ)充知識:SQL語言中 執(zhí)行語句 DESC與DESCRIBE有什么區(qū)別?

DESCRIBE TABLE 用于列出指定表或視圖中的所有列。

DESCRIBE INDEX FOR TABLE 用于列出指定表的所有索引,

所以 DESCRIBE是用來顯示數(shù)據(jù)結(jié)構(gòu)信息的;

而desc是descend ,是用于查詢出結(jié)果時候?qū)Y(jié)果進(jìn)行排序,是降序排序。

DESCRIBE 是 SHOW COLUMNS FROM 的縮寫。

DESCRIBE 提供有關(guān)一個表的列信息。col_name 可以是一個列名或是一個包含 SQL 通配符字符 “%” 和 “_” 的字符串。沒有必要用引號包圍字符串。

一、describe命令用于查看特定表的詳細(xì)設(shè)計信息

例如為了查看guestbook表的設(shè)計信息,可用:

describe guestbook describe ol_user userid

二、可通過”show comnus”來查看數(shù)據(jù)庫中表的列名

有兩種使用方式:

show columns form 表名 from 數(shù)據(jù)庫名

或者:

show columns from 數(shù)據(jù)庫名.表名

三、用describe命令查詢具體列的信息

describe guestbook id 就是查詢guestbook中id字段的列信息

{DESCRIBE | 
DESC
} tbl_name [col_name | wild]

DESCRIBE 是 SHOW COLUMNS FROM 的縮寫。

DESCRIBE 提供有關(guān)一個表的列信息。col_name 可以是一個列名或是一個包含 SQL 通配符字符 “%” 和 “_” 的字符串。沒有必要用引號包圍字符串。

mysql> 
desc
ol_user username\G

四、判斷字段是否存在

mysql_connect(
'localhost'  
,   
'root'  
,   
'root'   
);
   
mysql_select_db(   
'demo'   
); 
$test = mysql_query(
'Describe cdb_posts first'
); 
$test = mysql_fetch_array($test);

$test[0]返回的是該字段的名稱,比如我要查詢first字段,返回的就是first

如果此字段不存在返回的就是NULL,通過這樣可以判斷一個字段是否存在

以上這篇在SQL中對同一個字段不同值,進(jìn)行數(shù)據(jù)統(tǒng)計操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • mysql批量更新多條記錄的同一個字段為不同值的方法
  • MySQL根據(jù)某一個或者多個字段查找重復(fù)數(shù)據(jù)的sql語句
  • mysql查詢表里的重復(fù)數(shù)據(jù)方法

標(biāo)簽:惠州 呼和浩特 牡丹江 合肥 天津 沈陽 阿里 公主嶺

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《在SQL中對同一個字段不同值,進(jìn)行數(shù)據(jù)統(tǒng)計操作》,本文關(guān)鍵詞  在,SQL,中,對,同一個,字段,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《在SQL中對同一個字段不同值,進(jìn)行數(shù)據(jù)統(tǒng)計操作》相關(guān)的同類信息!
  • 本頁收集關(guān)于在SQL中對同一個字段不同值,進(jìn)行數(shù)據(jù)統(tǒng)計操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 米林县| 平原县| 南溪县| 德昌县| 怀远县| 崇阳县| 柞水县| 房山区| 瑞安市| 炉霍县| 饶平县| 黄陵县| 大姚县| 新泰市| 招远市| 镇平县| 泊头市| 长沙市| 铜山县| 新源县| 廉江市| 秦皇岛市| 河北省| 泰顺县| 大同市| 株洲市| 临沭县| 万山特区| 丰原市| 扶沟县| 孟津县| 错那县| 治多县| 巫山县| 儋州市| 富蕴县| 文水县| 蓝山县| 神农架林区| 株洲市| 灵台县|