關於SQL SERVER的分組統計

2022-05-17 19:51:53 字數 3813 閱讀 7231

1樓:匿名使用者

select a.termid,a.value,a.dtimefrom tabname a,

(select termid,max(value) valuefrom tabname

group by termid

) bwhere a.termid = b.termid and a.value = b.value

2樓:匿名使用者

你這是想取valued的最大值嗎?搞錯,要巢狀,那個對了

select termid,max(value) value from 表名

group  by termid

sql server如何按季度分組統計所有的資料

3樓:

和按月份組的原理是一樣的吧!

按月分組

按季度分組和按月分組的區別應該就是時間段的區別吧!

select case when  month(date)  =1 or month(date) =2

or month(date)=3   then '一季度'

when  month(date)  =4 or month(date) =5

or month(date)=6   then '2季度'

when  month(date)  =7 or month(date) =8

or month(date)=9   then '3季度'

when  month(date)  =10 or month(date) =11

or month(date)=12   then '4季度'

else '' end ,sum(數量)

from table

group by

case when  month(date)  =1 or month(date) =2

or month(date)=3   then '一季度'

when  month(date)  =4 or month(date) =5

or month(date)=6   then '2季度'

when  month(date)  =7 or month(date) =8

or month(date)=9   then '3季度'

when  month(date)  =10 or month(date) =11

or month(date)=12   then '4季度'

else '' end

4樓:

用convert函式轉成季度再分組即可

5樓:黃春映

quarter(日期)返回季度 再group by

6樓:匿名使用者

←~← group by 哈哈哈

sql語句 怎麼分組統計

sql server按照某列的某值進行分組統計資料?

sql中根據表中乙個字段分組分別統計每個分組的記錄數

7樓:baby愛吃水煎包

分組統計可以參考以下操作:

當陣列重複的時候分組才有意義,因為乙個人也可以分為一組,只是沒有意義而已,分組採用group by語句完成,語法如下:

例子:按照部門編號分組,求出每個部門的人數,平均工資

按照職位分組,求出每個職位的最高和最低工資:

一旦分組之後,實際上對於語法上就會出現新的限制:

分組函式可在沒有分組的時候單獨使用,卻不能出現其他的查詢字段:

ename就是其它查詢字段。在select子句之後,只能出現分組的字段和統計函式,其它的字段不能出現

分組函式允許巢狀,但是巢狀之後的分組函式的查詢之中不能再出現任何其它字段

例子:按照職位分組,統計平均工資最高的工資

當新增其它字段『job』之後出現錯誤

例子:查詢出每個部門的名稱、位置、部門的人數、平均工資

確定所需的資料表:

emp表:部門的人數,平均工資

dept表:部門的名稱,位置

確定已知的關聯字段:

emp.deptno = dept.deptno

發現dname存在重複,可以進行分組去除重複,按照之前對分組的理解,只要資料重複那麼就有可能進行分組的查詢操作,但是此時與之前的分組操作 不太一樣,之前的分組是針對一張實體表進行分組的(emp,dept都屬於實體表),但是對於以上的資料是通過查詢結果顯示的,所以是一張臨時的虛擬表,但是不管是否是實體表還是虛擬表,只要是有重複,那麼就直接進行分組

8樓:匿名使用者

select 字段,count(字段) from tablename group by 字段

sql 時間段分組統計查詢

9樓:匿名使用者

有點點麻煩,需要先構建乙個關於時間段的虛表

先找到你訂單的最早的時間,然後找乙個行數足夠多的表

假設你的表名叫s,也就是你羅列出資料這個表

with t as

(select row_number() over (order by id)-1 rn from sheet2)--sheet2替換成你行數足夠多的表,還有order by id裡的id你隨便替換你表裡的乙個字段

select dateadd(hour,10+24*t.rn,cast('2013/3/1' as datetime)) begin_time,--2013/3/1換成你表裡的最小時間

dateadd(hour,10+24*(t.rn+1),cast('2013/3/1' as datetime)) end_time,

count(*) 訂單數量

from t,s--這個s替換成你自己的表名

where cast(s.時間)>=dateadd(hour,10+24*t.rn,cast('2013/3/1' as datetime))

and cast(s.時間)

10樓:水口満裡奈

沒用過sqlserver,都是oracle,mysql。不過原理上應該都是一樣的。

首選時間欄位列拆成兩列 日期(date) 和小時(hour),都是數字型 這是第一層sql,比如2013/3/3 1:23 拆成

20130303 1 ,2013/3/3 11:23 拆成 20130303 11。 然後獎這兩列再合成乙個分組列 ,用case when語句 對小時列進行判斷,如果小時列小於10,則合併後的分組列 =日期列-1,如果大於10,則+0,sql語句,select date+(case when hour<10 then -1 else 0 end) from 第一層結果。

上面的兩個例子合併後的分組列分別是 20130302,20130303。最後對分組列group by 就搞定

11樓:客廳沙發三件套

我覺得可以這樣。比較清晰。其實你這個說白了就是按天分組而已,只不過是時間上是10點。

可以先將資料的時間列都減少10小時,再按天分組。

select datepart(yyyy,t.newdate),datepart(mm,t.newdate),datepart(dd,t.newdate),count(*) from

(select id,dateadd(hour,-10,orderdate) as newdate from [table]

) as t

group by datepart(yyyy,t.newdate),datepart(mm,t.newdate),datepart(dd,t.newdate)

關於sqlserver的T SQL語句的變數作用域的疑問

t sql的變數作 bai用域,同普通程式的作du用域差不多 zhi,只在定義的範圍內有效 1.if else內定dao義的,只能在這裡面回使用,出去後無效答 2.if else之前定義的,也可以在if else內使用3.if else之後定義的,不可能在if else內使用關於唯一性,同級的兩個作...

分組名稱霸氣關於bigbang,分組名稱霸氣關於bigbang八個

bigbang is vip 權志龍.款雞湧 崔勝賢.崔塔普 東永裴.東二貝 姜大聲.姜哆啦 李勝賢.李膩膩 最美不過皇冠海 vip forever 關於bigbang的 網名,還有分組 權世界。權 他姓權i 我愛的bigbang會發光阿 萬人 bigbang會發光 bigbang會發光blingb...

關於sqlserver資料庫的若干問題

1.想要資料不丟失,就多做備份,sqlserver都有分離資料庫的功能,你仔細找找 2。觸發器是針對具體表操作的,比如你想對乙個表做保護,如果對該錶每刪除一條記錄,就把該記錄的內容複製到另乙個表裡,以便能夠便於檢視和恢復,這種情況就可以用觸發器來實現 例如 create trigger 觸發器名 o...