????? 現在忽然發現喜歡上了寫博客,讓博客記錄自己成長的點點滴滴,在書寫自己成長的同時,希望以后給那些像我一樣剛剛起步的童鞋們一點啟發,避免犯同樣的錯誤。在看博客同時也希望一些高手對于文章中的問題有更好的解決方法,希望高手留下你們更好的解決方法。
?? 好了,不廢話了,開始今天的話題。最近時間剛從客戶端轉入后臺寫服務,對于后臺數據庫以及服務的書寫完全是個小白,所以最近寫的肯定沒有太多技術含量。
?? 首先把遇到的問題擺出來:還是那張錯誤上報表,字段主要有上報錯誤ID(ErrorID),上報人(ReportPerson),上報時間(ReportTime)精確到毫秒,現在要做的統計是:(1)統計一定時間內【起止時間精確到毫秒】(beginTime,endTime)每個人每天上報的錯誤個數(2)統計一定時間內【起止時間到精確到月】(beginTime,endTime)按月統計每個人上報的錯誤總數。
看到問題首先想到的是要group by ReportPerson,能將每個人的統計數據計算出來,但是還沒達到要求,還需要獲得每個人每天的統計數據,對于我這樣的菜鳥來說就有點麻煩了,不知道該怎么下手了,在sql群里找了個高手,告訴需要把規定一下時間格式,然后把時間格式限定到天和月,這兩個問題就解決了。
上篇已經將多個時間函數羅列了出來,現在就本文章中用到的CAST 和 CONVERT詳細介紹一下:
先看一 下他們的語法 :
CAST ( expression AS data_type [ ( length ) ] )
?? CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
其中:
select ReportPerson,CONVERT(varchar(11) , ReportTime , 20 ) as 'ReporTime', count(*) as reportTotal from PCR_ConstructInfo where (ReportTime>'2012-11-15 12:11:12.23')and (ReportTime<'2013-1-16 12:11:12.23') group by ReportPerson,CONVERT(varchar(11) , ReportTime , 20 )
?執行結果為:
還有一個問題是按月統計每個人上報錯誤量的統計,只要將時間日期限定到月就好了,即:CONVERT(varchar(7) , ReportTime , 20 )??????? yyyy-mm? 執行sql語句為:
select ReportPerson,CONVERT(varchar(7) , ReportTime , 20 ) as 'ReportTime', count(*) as reportTotal from PCR_ConstructInfo where (ReportTime>'2012-11-1')and (ReportTime<'2013-2-1') group by ReportPerson,CONVERT(varchar(7) , ReportTime , 20 )
?執行結果為:
好了,今天就到此為止吧,如果哪位大師有更好的方法,歡迎留言?。?!
?
?
?
?
?
?
?
?
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
