1. 程式人生 > >sql的分組統計與group by 日期的處理

sql的分組統計與group by 日期的處理



近幾天補oracle的sql知識,這塊記錄下sql的分組統計

1.簡單的分組統計

建立STUDENT表:

  CREATE TABLE STUDENT(
	"NAME" VARCHAR2(10 BYTE), 
	"MAJOR" VARCHAR2(10 BYTE), 
	"SCORE" NUMBER(5,2), 
	"SEX" VARCHAR2(3 BYTE)
   );


錄入資料:

Insert into STUDENT (ID,NAME,MAJOR,SCORE,SEX) values (1,'邱君','語文',70,'女');
Insert into STUDENT (ID,NAME,MAJOR,SCORE,SEX) values (2,'小狗','語文',76,'男');
Insert into STUDENT (ID,NAME,MAJOR,SCORE,SEX) values (3,'混蛋','語文',60,'男');
Insert into STUDENT (ID,NAME,MAJOR,SCORE,SEX) values (4,'邱君','數學',81,'女');
Insert into STUDENT (ID,NAME,MAJOR,SCORE,SEX) values (5,'混蛋','數學',90,'男');
Insert into STUDENT (ID,NAME,MAJOR,SCORE,SEX) values (6,'小狗','數學',77,'男');
Insert into STUDENT (ID,NAME,MAJOR,SCORE,SEX) values (7,'邱君','外語',98,'女');
Insert into STUDENT (ID,NAME,MAJOR,SCORE,SEX) values (8,'小狗','外語',71,'男');
Insert into STUDENT (ID,NAME,MAJOR,SCORE,SEX) values (9,'混蛋','外語',88,'男');

查詢語句(查找出有兩科分數大於80,並且平均平均成績大於80的同學):

SELECT name,  
              SUM(CASE WHEN major = '數學' THEN score ELSE 0 END)數學 ,
              SUM(CASE WHEN major = '外語' THEN score ELSE 0 END)外語 ,
              SUM(CASE WHEN major = '語文' THEN score ELSE 0 END)語文, 
              AVG(score)
              FROM 
              student 
              GROUP BY NAME 
              HAVING 
              AVG(score) > 80 
              AND 
              SUM(CASE WHEN score > 80 THEN 1 ELSE 0 END) >= 2;

查詢結果:

 

2.group by 日期的處理:

select to_char(dt,'yyyy-mm-dd'),
      SUM(case when re='勝' then 1 else 0 end)勝,
      sum(case when re='負' then 1 else 0 end)負
      from
      test_tab
      group by to_char(dt,'yyyy-mm-dd')
      ;

to_char(date,'yyyy-mm-dd')處理日期,之後to_char(date,'yyyy-mm-dd')



相關推薦

sql分組統計group by 日期處理

 近幾天補oracle的sql知識,這塊記錄下sql的分組統計 1.簡單的分組統計 建立STUDENT表: CREATE TABLE STUDENT( "NAME" VARCHAR2(10 BYTE), "MAJOR" VARCHAR2(10 BYTE),

Oracle-分組函式group by

常見的分組函式:max(),min(),sum(),avg(),count() 組函式最多隻能巢狀兩層 1、max()和min()函式 對任何型別資料都可以使用,顯示最大值和最小值 select max(sal) 最大工資,min(sal) 最小工資 from emp; 最

oracle 分組函式group by正確用法詳解詳細解釋

oracle資料庫 分組函式與group by正確用法詳解與詳細解釋1.查詢時同時查詢了分組函式列和非分組函式列就需要使用group by,但是僅僅查詢分組函式列可以不結合group by使用。 SQL> select TABLESPACE_NAME,sum(user

SQL Server 聚合函式分組學習(group by

一、SQLServer裡面的常用的五種聚合函式。 1.Sum(和)-—對於NULL值預設為0 2.MAX(最大值)MIN(最小值) 3.AVG (平均值)—不統計空值,例如存在有四個人,但是隻有三個人有成績,平均成績為:總和/3 4.COUNT(數量) --統計所有人分數總和

SQL重復記錄查詢-countgroup by having結合查詢重復記錄

nbsp 根據 iteye sele rul 判斷 select pro .net 查找表中多余的重復記錄,重復記錄是根據單個字段(peopleId)來判斷select * from peoplewhere peopleId in (select peopleId fr

資料統計分析時常用sql語句 (split , row_number , group by, max 等 )

統計分析及建表過程中通常會遇到這樣的需求,比如: 1. 統計以逗號分隔的標籤數,哪個最受歡迎,以及作為內容推薦的資料來源 2. 分組排序url的pv, 取topN的列表 3. 經常會有名字重複的url記錄,取pv最大的那條, 剩下的剔除 下面逐一對以上場景進行總結, 用的是 hivesql,希望

sql的sum函式(group by,having子句混合使用)

SELECT Customer,SUM(OrderPrice) FROM Orders WHERE Customer='Bush' OR Customer='Adams' GROUP BY Customer HAVING SUM(OrderPrice)>1500

使用SQL語句中的Group by分組並計算每組的數量

分類 html count函數 別名 sql 例如 分組 rom 所有 在SQL語句中,Group by一般用來做分組統計使用,在實際的開發中我們可能會遇到不僅需要分組,還需統計出每組的數量條數,那這時候可以結合count函數來一起使用即可完成此項操作,最後的結果展示出所有

MySQL 基本應用 count() group by

技術 .cn ima count() 應用 nbsp .com count 基本 MySQL 基本應用 count() 與 group by

Mysql5.7中子查詢時order bygroup by合用無效的解決辦法

tro group by blog gpo html size 查詢 mysql 參考資料 環境說明: Windows10 專業版64位 MySQL5.7.20 《2015年辛星mysql教程第一本基礎操作》 P65 原文: 實踐內容: 上面的SQL語句沒

關於group bygroup by having、where group by group by order by

姓名 函數 學生 art sco 分數 現在 大於 數學 轉載:https://blog.csdn.net/qq_28007533/article/details/72859474 現有表 score name kecheng fenshu 張三

SUMGROUP BY語句的優化

ble 排序。 Inventor 好的 海量 超過 ash 無需 原因 一.SUM與GROUP BY語句的優化: 1.原語句為:SELECT IID.INVENTORY_ITEM_ID, SUM(IID.AVAILABLE_TO_PROMISE_DIFF), SUM(IID

關於hive中的countgroup by的總結

Group By語句從英文的字面意義上理解就是“根據(by)一定的規則進行分組(Group)”。它的作用是通過一定的規則將一個數據集劃分成若干個小的區域,然後針對若干個小區域進行資料處理。  注意:group by 是先排序後分組;  count :. 1、 並不是說

Mysql 分組查詢(group by

分組查詢 1 語法 select 查詢列表 from 表 【where 篩選條件】 group by 分組的欄位【order by 排序的欄位】; 2 特點 1、和分組函式一同查詢的欄位必須是group by後出現的欄位 2、篩選分為兩類:分組前篩選和分組

over partition bygroup by 的區別

今天看到一個老兄的問題,   大概如下:  查詢出部門的最低工資的userid 號  表結構:  D號      工資      部門  userid salary   dept  1      2000      1  2      1000      1  3    

在mysql中RIGHT JOINgroup by一起使用引起的一個大bug

本來按理說這個小問題不值得寫一個部落格的,不過正是這個小問題造成了一個大bug。 本來每月對資料都好好的,但是這一兩天突然發現許多資料明顯不對,這一塊的程式碼和sql有些不是我寫的,不過出現了bug,還是要迎難而上,我就從資料來源頭查起,發現數據源好像也沒有問題。 地毯式搜尋,中間的sql,邏輯一個一個對

SQL查詢語句where,group by,having,order by的執行順序和編寫順序

當一個查詢語句同時出現了where,group by,having,order by的時候,執行順序和編寫順序。 一、使用count(列名)當某列出現null值的時候,count(*)仍然會計算,但是count(列名)不會。 二、資料分組(group by ): sel

MySQL 分組查詢(group by 的用法淺析)

資料庫的表結構如下:   #列出每個部門最高薪水的結果 SELECT szDepartment, MAX(nSalary) AS nMaxSalary FROM test.department GROUP BY szDepartment;

MySQL 關於countgroup by一起用的效果

本來想要效果是有多少個userId,結果卻顯示的是,去重後每組userId有多少個。 select count(id) from ls_wweb_log_call where userId is not null and companyUserId=:companyUse

sql 提升查詢效率 group by option hash group

問題: 一個程式查詢經常超過20siis限制時間,排查問題後發現其中的一個儲存過程時間會在15s左右 解決思路: 1:確認問題點 通過輸出時間的方式檢視儲存過程中每個部分的執行時間,找到最耗時的三個過程 2:解決問題 發現查詢過程中出現 with nolock ,對於查詢過程沒有用處,刪除 先思