pgsql統計時遇到的難題以及一些總結

2021-10-21 14:51:38 字數 2397 閱讀 3265

本文參考於:postgresql資料資料庫中按日、月、周、年、時、分,30分鐘的統計解決方案 ,並在後面新增了自己開發專案中遇到的一些問題。

對要統計的時間字段進行字元轉換處理,再按照其分組即可實現對資料進行日,周,月,年,時,分的統計。主要用到to_char()函式。

按年統計:'yyyy'

to_char( row_date,

'yyyy'

)as row_date2

from ***

group

by to_char( row_date,

'yyyy'

)

按月統計:'yyyy-mm'

to_char(row_date,

'yyyy-mm'

)as row_date2

from ***

group

by to_char(row_date,

'yyyy-mm'

)

按日統計:'yyyy-mm-dd'

to_char(row_date,

'yyyy-mm-dd'

)as row_date2

from ***

group

by to_char(row_date,

'yyyy-mm-dd'

)

按小時統計:'yyyy-mm-dd hh'

to_char(row_date,

'yyyy-mm-dd hh'

)as row_date2

from ***

group

by to_char(row_date,

'yyyy-mm-dd hh'

)

按分鐘統計:'yyyy-mm-dd hh:mm'

to_char(row_date,

'yyyy-mm-dd hh:mm'

)as row_date2

from ***

group

by to_char(row_date,

'yyyy-mm-dd hh:mm'

)

mybatis操作sql語句時,如果要動態決定按年或者月來統計的話,可以將to_char()函式的第二個引數作為變數傳遞,【注意】這個變數要用${}的方式獲取,並且不要忘記加''

比如:

"getymstatis" parametertype=

"string" resulttype=

"***.yearormonthvo"

>

select to_char

(createtime,

'$') as t,

sum(price) as money,

count

(id) as num

from ***

where result =

't' group by to_char

(createtime,

'$')

<

/select>

1、每年

select

year

(ordertime) 年,

sum(total) 銷售合計

from 訂單表

group

byyear

(ordertime)

2、每月

select

year

(ordertime) 年,

month

(ordertime) 月,

sum(total) 銷售合計

from 訂單表

group

byyear

(ordertime)

,month

(ordertime)

3、每日

select

year

(ordertime) 年,

month

(ordertime) 月,

day(ordertime) 日,

sum(total) 銷售合計

from 訂單表

group

byyear

(ordertime)

,month

(ordertime)

,day

(ordertime)

遇到的難題彙總

布局裡可能有很多層級的子元件,在子元件沒有完全載入之前,沒法知道容器的高度,因此很難正確設定左側導航的高度。另外,在互動過程中,容器的高度也會改變,還有當瀏覽器寬高改變或者螢幕解析度改變時,這些情況下也需要動態設定左側導航的高度。有沒有辦法在布局裡知道是否所有的子元件均已載入完畢?或者有沒有辦法知道...

pgsql查詢統計每天的資料

因為最近一直在使用pg資料庫,然後遇到乙個問題是需要統計每天的資料。表裡有乙個欄位是記錄的建立時間,但是型別卻是timestamp型別,不能直接用group by之類的語句來解決問題。經過一番努力,終於找到解決方案,語句如下 select count 1 substring to char t.cr...

screeps所遇到的難題

首先記錄一下遇見的問題 1.使不同的小兵分別移動到不同的目的地 已解決,sources陣列改下標就好。每個mode中的 中,以roleupgrader教程 為例 1 var roleupgrader creep 4 run function creep 10 11else15 16 17 1819 ...