a公司某月日交易報表,需要展示的資料有交易量,交易成功總次數以及總金額
收先想到的肯定是把交易資料按日分組,然後去做對應的運算,這樣會出現乙個問題,就是如果某天沒資料的話,就會出現顯示的資料不完整
/**
* @param ledgerdailydtolist 每日資料(有空的)
* @param begintime 開始時間
* @param endtime 結束時間
* @return 補充無資料的天
*/private list
getstatistics
(list
ledgerdailydtolist, localdatetime begintime, localdatetime endtime)
}// 若不存在,則新增資料if(
!flag)
}return statistics;
}/**
* @param ledgerdailydtolist 每日資料(有空的)
* @param begintime 開始時間
* @param endtime 結束時間
* @return 補充無資料的天
*/private list
getstatisticsv2
(list
ledgerdailydtolist, localdatetime begintime, localdatetime endtime)
list
list = ledgerdailydtolist.
stream()
.map
(ledgerdailydto -
> ledgerdailydto.
gettransactiontime()
).collect
(collectors.
tolist()
);localdatelist.
removeall
(list)
; localdatelist.
stream()
.foreach
(localdate -
> ledgerdailydtolist.
add(
newledgerdailydto()
.settransactiontime
(localdate)
.setconsumpay(0
).setconsumtime(0
).setrefundpay(0
).setrefundtime(0
).setincomesum(0
)));
return ledgerdailydtolist.
stream()
.sorted
(comparator.
comparing
(ledgerdailydto:
:gettransactiontime)).
collect
(collectors.
tolist()
);}
上面是兩種不同的實現方式,其實演算法是差不多的,都是把需要的資料線造出來,然後遍歷,把空的資料補上或者置空
以後分組的地方要尤其注意此類問題的取捨,是不是該維護空資料
Oracle資料庫建表時候需要注意的地方
各位好,預設情況下,oracle的資料庫物件 表 檢視 儲存過程 函式等 的相關名稱,只支援大寫,並且名字長度限制在30個英文本元內。大部分oralce的相關工具也是按此來進行操作的。在編寫sql時,不管是全大寫 全小寫或者大小寫混合,oracle一律按全大寫處理,例如下述三個個語句是等價的 cre...
Mysql資料庫分組
擷取字段 進行資料庫分組 select ts time count ts time from inform analysis where ts time 2010 01 01 and ts time 2010 02 23 group by substring ts time 1,10 linux批量...
sql語句有聚合函式時該注意的地方
若一張表info有如下幾個字段,name,age,high三個字段,code select max age asage,max high ashigh from info 上面的sql將是取表中最大的age和表中最大的high資料,而這2個資料並不一定是表裡 某一條的資料 code select m...