對比Excel學習SQL(4):計算欄位

2021-02-11 可樂的數據分析之路

今天這篇文章是對比Excel學習SQL系列的第4篇文章,之前3篇的傳送門在這裡:《對行和列的操作》、《庫/表/記錄的增查刪改》、《寫給小白的SQL學習文章》。

計算欄位的意思是通過原有欄位的運算創建新的欄位,本文主要從算術運算符計算欄位、函數計算欄位和聚合函數的應用三個方面來分享。

一、算術運算符計算欄位

算術運算符就是加減乘除運算符,用算術運算符創建欄位直接在select後寫命令。

--select 列 算術運算符 from 表;--從sc成績表裡提取學號、成績以及每個學生的成績加5select snum,score,score + 5 as score2 from sc;

給新創建的欄位賦予名稱,用到【AS】命令 

這裡我們對sc表裡的score列每個數值都+5得到一個新的score2欄位,如下:

我們想一下這個操作對應在Excel裡就是很簡單的新建一列,然後賦值,如下動圖:

二、函數計算欄位

01 日期函數

對日期時間型數據進行操作的函數,日期函數裡用到較多的是YEAR()、MONTH()、DAY(),Excel裡也有這三個函數,作用都是提取某個日期下的年、月、日的數據。

如下例,提取2003年3月3日出生的學生,這裡可以不用DATE()函數,因為sage列本身就已經預設成了日期格式,需要注意的是,篩選日期時要用單引號引起來。

--提取2003年3月3日出生的學生的數據select * from student1 where sage = '2003-03-03';select * from student1 where DATE(sage) = '2003-03-03';

 

【MONTH】

再如下例,提取2003年出生的所有學生記錄。

--提取2003年出生的學生的數據select * from studenet1 where YEAR(sage) = 2003;

同理,MONTH()函數和DAY()函數也是這樣的用法。這個操作在Excel裡相當於新建一列year欄位,用YEAR()函數作用於sage欄位,得到每個學生出生日期的年份,最後篩選出2003年的學生數據,整個過程如下動圖所示:

 

02 文本函數

對字符型數據進行操作的函數,這裡文本函數和Excel裡相應函數的用法都是一樣的,不同的是length()函數對應的是Excel裡的len()函數,名字不同罷了,想要複習Excel裡文本函數的同學,傳送門在這裡:《Excel文本函數》

SQL裡的文本函數是這樣的:

函數

說明

使用

Left()

從一個字符串最左邊開始返回指定個數的字符

Left(字符串,返回個數)

right()

從一個字符串最右邊開始返回指定個數的字符

right(字符串,返回個數)

Length()

返回字符串的長度

Length(字符串)

 

【left】

提取每個學生的姓

--提取學生的姓select sname,left(sname,1) as f_name, sage from student1;

在Excel裡是這樣操作:新建一列f_name,對sname作用left函數,如下動圖:

03 數值函數

對數值型數據進行處理的函數,這些函數在Excel裡也是這樣的用法,常見的有:

函數

說明

使用

Abs()

返回一個數值的絕對值

Abs(數值)

Exp()

返回一個數的指數值

Exp(數值)

Round()

把數值四捨五入為指定數值

Round(數值,返回的小數位數)

 對成績一列取整:

--對成績一列取整select snum,score,round(score,0) from sc;

 


三、聚合函數

聚合函數是對數值數據進行匯總的函數,主要有以下:

函數

說明

COUNT()

計數

SUM()

求和

AVG()

平均值

MAX()

最大值

MIN()

最小值

這些和Excel相應函數的用法也一致,需要注意的是同Excel一樣,聚合函數得到的是一個數據,而非一系列查詢後的記錄。

 

01 COUNT函數

count函數是對行進行計數。

--select count(列) from 表;對特定列的值計數--select count(*) from 表; 可以查看表的總行數--select count(DISTINCT 列) from 表; 去重以後的行數

查詢student1表總有有幾行;

查詢性別一列不重複的有幾行

select count(*) from student1;select count(DISTINCT sex) from student1;

以上count函數計數的操作在Excel裡就是count函數的應用:

02 SUM函數

sum函數是對指定列求和。

對sc表中的成績一列求和。

select sum(score) from sc;

 

對學號為1的學生的成績求和:

select sum(score) from sc where snum = 1;

第二個列子對學號為1的學生的成績求和,在Excel裡用到sumif條件求和函數,公式「=SUMIF(A:A,A2,C:C)」的意思是對A列裡等於1的條件求和。

 

03 AVG函數

Acg函數用於對列求平均值,在Excel裡這個函數的名字變了,是average(),大家不要搞混哦。

--select avg(列) from 表;select avg(score) from sc;

對成績一列求平均值

 

在Excel裡,用AVERAGE()函數對score一列求平均值

04 MAX函數

返回指定列中的最大值。

--select max(列) from 表;select max(score) from sc;

找出最高成績

在Excel裡用max()函數對score一列求最大值

05 MIN函數

返回制定列中的最小值。

--select min(列) from 表;select min(score) from sc;

找出最低的成績

在Excel裡用min()函數對score一列求最小值

06 聚合函數的綜合應用

通過求和、計數、最值的統計進行簡單的描述性統計分析,可以了解數據的大致分布。

select sum(score) as sum_sc,avg(score) as avg_sc,max(score) as max_sc,min(score) as min_sc from scl

在Excel裡之前也提到過,用【數據】——【數據分析】——【描述統計】來做描述性統計分析。

step1:打開【數據】——【數據分析】——【描述統計】對話框

step2:將要分析的數據輸入到輸入區域,勾選匯總統計前的選框。

step3:得到分析結果如圖

具體的關於Excel描述統計的內容,請移步《描述性統計分析》前往查看。

對比Excel學習SQL系列的第4篇就到這了,更多精彩敬請期待~

提供入門級數據分析的學習路線規劃,分享從Excel到統計學的乾貨。數據分析是一項技能,希望人人都能分析數據。

相關內容:

SQL學習:MySQL入門 | 庫/表/記錄的增查刪改

Excel分析方法:時間序列分析 | 回歸分析 | 描述性統計分析 | 相關性分析 

Excel圖表:數據地圖 | 數據透視表 | 5個基本圖 | 13個進階圖 | 直方圖 | 控制圖 | 排列圖

Excel函數:日期文本函數 | 查找引用函數 | if函數 | 統計函數

用Excel進行數據分析:數據獲取 | 數據處理 

方法論:如何系統地學習Excel | 數據分析學習 | Excel相見恨晚的技巧 

碼字不易,點個右下角 在看 ,給小姐姐加雞腿喲~

相關焦點

  • 對比Excel學習SQL(6):表連接
    本文是對比Excel學習SQL系列第6篇文章,之前5篇傳送門在此:《分組和子查詢》、《計算欄位》、《對行和列的操作》、《庫/表/記錄的增查刪改》
  • sql替換資料庫欄位中的字符
    某些時候我們要修改資料庫欄位中的部分字符串,如果內容少時一個一個替換,內容多時,就不能一個一個的替換了,因為這樣不僅耗時還容易出錯。下面就用sql批量進行替換。替換shopping_hw表中欄位hw_pic,內容「*common」替換為「+play」.
  • 對比MySQL學習Pandas的groupby分組聚合
    對於一個二維表,每一行都可以看作是一條記錄,每一列都可以看作是欄位。* SQL風格:寫sql語句來處理。接著就是執行group分組條件,對比pandas就是寫一個groupby條件進行分組。,① 學習怎麼分組;② 學習如何針對每個分組中的數據,進行對應的邏輯操作;我們可以通過groupby方法來對Series或DataFrame對象實現分組操作,該方法會返回一個分組對象
  • 讓你的EXCEL數據透視表更美觀:欄位計算+自定義格式
    將銷售日期和銷售員欄位放在行欄位,將銷量欄位放在值欄位。步驟2:設置數據透視表的布局和樣式。將日期組合成月,匯總方式設為不顯示分類匯總,報表布局設置為以表格形式顯示,並選擇表格樣式為淺藍。步驟3:插入計算欄位。滑鼠定位在數據透視表內,選擇【分析】→【欄位、項目和集】→【計算欄位】彈出計算欄位對話框。
  • 睿智sqltoy-orm-4.13.13 發版
    開源地址:更新內容1、優化了執行輸出,避免存在2次日誌輸出現象,導致日誌分析幹擾2、改進批量操作的日誌輸出信息,增加了批量執行的記錄數量3、修復特定情況下存儲過程調用bug4、修復報表集成使用sqltoy自身的匯總計算前面的命名空間沒有處理的缺陷5、分頁優化代碼優化
  • 一場pandas與SQL的巔峰大戰(七)
    第四篇文章一場pandas與SQL的巔峰大戰(四)學習了在MySQL,Hive SQL和pandas中用多種方式計算日環比,周同比的方法。第五篇文章一場pandas與SQL的巔峰大戰(五)我們用多種方案實現了分組和不分組情況下累計百分比的計算。
  • Excel|數據透視表添加計算欄位替代繁瑣的函數計算
    問題情境如下圖數據,記錄了不同銷售部門不同員工的銷售計劃與實際銷售情況:要求按部門統計銷量計劃完成情況,並能隨時查看每位員工計劃完成率,完成這項工作最方便的方法就是利用數據透視表的增加」計算欄位公式實現第一步:添加數據透視表滑鼠放在工作表數據區域任意單元格位置,選擇」插入「菜單中的」數據透視表「,這增加直觀的對比效果,我選擇放置位置為本工作表的F1單元格,如下圖:將」部門「與」姓名
  • 當pandas撞上了sql,於是一個強大的pandasql庫產生了!
    關於下方各表之間的關聯關係,我就不給大家說明了,仔細觀察欄位名,應該就可以發現。2. pandasql的使用1)簡介pandas中的DataFrame是一個二維表格,資料庫中的表也是一個二維表格,因此在pandas中使用sql語句就顯得水到渠成,pandasql使用SQLite作為其操作資料庫,同時Python自帶SQLite模塊,不需要安裝,便可直接使用。
  • 【超詳細】ArcGIS欄位計算器分割欄位中的字符串
    最近在整理植物數據,數據本來是以excel進行存儲,但是其中涉及到要對欄位進行分割,由於對excel的相關函數不熟悉於是想著能不能用arcgis的欄位計算器進行解決,經過摸索成功地解決了自己遇到的問題,並記錄下來,如下:1、目的:用arcgis的欄位計算器將欄位基於特殊字符進行分割,並將分割後的數據保存在對應的新創建的欄位中;
  • SQL Server 動態行轉列(參數化表名、分組列、行轉列欄位、欄位值)
    今天跟大家分享SQL Server 動態行轉列(參數化表名、分組列、行轉列欄位、欄位值)的知識。一.本文所涉及的內容(Contents)本文所涉及的內容(Contents)背景(Contexts)實現代碼(SQL Codes)方法一:使用拼接SQL,靜態列欄位;方法二:使用拼接SQL,動態列欄位;方法三:使用PIVOT關係運算符,靜態列欄位;方法四:使用PIVOT關係運算符
  • sql在excel中的應用(當excel遇上sql)
    也許你會了excel基礎,也許你會函數,也許你還會數據透視表。但即使會了這麼多,但有的數據處理面前,也顯得捉襟見肘。那麼是時候學習SQL在excel中的的運用了。課程目錄1.SQL與EXCEL基礎 播放 10分鐘 2.從零開始學習SELECT語句 播放 11分鐘 3.數據源與欄位的變化 播放 13分鐘 4.比較運算符(條件查詢) 播放 10分鐘 5.比較運算符(條件查詢之日期) 播放 8分鐘 6.邏輯運算符(與或非空) 播放 9分鐘 7.
  • sqltoy-orm-4.16.16 發版,並行查詢場景增強、級聯增加排序
    -- <table name="SQLTOY_DICT_DETAIL" update-cascade="delete" load="STATUS=1" orderBy=""/> --></cascade>2、並行查詢可以自行設置每個查詢的條件參數3、優化findEntity 資料庫關鍵詞的處理4、sqltoy-boot-starter
  • 產品經理學SQL(二)一天學會用SQL解決業務查詢問題
    本篇文章意在幫助大家系統地入門SQL,教大家如何解決sql查詢任務。前言回顧一下,上一篇文章我們已經知道了SQL語言的基本框架,並能完成簡單的單表查詢和雙表連接查詢。這篇文章希望能幫助你系統地入門SQL,從而解決產品經理80%的sql查詢任務。和上篇的一個小時入門SQL一樣,這篇文章的建議學習時間為一天。
  • EXCEL操作資料庫表,自動判斷欄位類型,批量添加數據到資料庫表
    使用SQL語句添加數據時,不同的欄位類型要求不一樣,字符類型要求要用單引號括起來,數字類型則什麼都不用加,時間日期類型要前面後井號"#",如果不按要求寫語句將會出錯。所在在添加數據時要把每個欄位類型都弄清楚,很容易出錯,所以研究了一下自動檢測欄位類型,然後根據不同的類型為每個欄位使用不同的寫法。
  • 數據分析利器 pandas 系列教程(四):對比 sql 學 pandas
    作為 pandas 教程的第四篇,本篇將對比 s
  • 美團開源 SQL 優化工具 SQLAdvisor,與內部版本保持一致
    根據條件計算欄位的區分度按照高低進行倒序排,如果小於30則丟棄。同時使用最左原則將 where 條件進行有序排列。計算區分度通過 「show table status like」 獲得表的總行數 table_count。
  • 【社區精選43】Excel導入MySQL數據出現欄位錯行原因&解決方案
    也就是對比MySQL資料庫原表的列的順序,會發現該表的表頭與資料庫中原表的欄位列不一樣。當導入數據時候,excel會對原表頭進行重新排序。本案例中:導入的數據表頭是按欄位名稱的英文字母的升序順序。而不是按原來數據表中的欄位順序。這會導致當導入的數據出現格式錯誤無法導入。
  • Sql盲注學習筆記1
    payload='id=0 or if((select ascii(substr(({substr_sql} limit {limit_offset},1),{substr_offset},1))={ascii_num}),1,0)'column_content=''column_contents=[]#通過字典的形式關聯起來 列表中第一個元素表示對應的表的列數
  • sagacity-sqltoy-4.16.3 發版,融合 jpa 式對象 crud+極致查詢!
    更新內容1、優化對tidb、oceanbase、guassdb的支持2、修復@if中存在2個邏輯判斷表達式切割bug,增加@if(:status in '1,2,3') 和@if(:status out '1,2,3') 判斷邏輯,進一步增強if判斷能力3、優化日誌輸出,排除批量更新和保存提示「無參數」導致理解偏差4、
  • sqltoy-orm-4.15.7.3 發版,增強 link 功能,開放緩存管理接口
    >2、優化postgresql9.4 版本的saveOrUpdate功能(9.4 不支持insert table AS T1別名模式,剔除別名),推薦9.5+版本3、增強loadBySql、load(entity)對象類型處理,避免new VO(){{setId("");}} 雙大括號極端特殊場景下定義對象導致類型獲取錯誤。