[英]script to populate monthly summary tables based on the date field in one table
我需要開發一個像pl / sql塊這樣的sql腳本,以便從單個usertransaction表中將記錄填充到每月交易表中,例如txn_jan,txn_feb ... txn_dec。 該表有一個currentdate字段,我可以解析該字段以獲取月份,然后通過增加每個月度表中的transaction_cnt字段的計數來匯總所有類似的交易(如果其他字段都相同-resourceid,userid,objectid)。 因此,如果用戶在一天內重復進行了相同類型的交易,則usertransaction表將為每個交易分別記錄不同的條目,但是每月匯總表將在其date字段中僅包含日期部分的交易計數(按時間匯總日期)。
我該如何開發用於填充匯總表的腳本。我的usertransaction表中填充了數據。
usertransaction表字段 :userid,resourceid,doc_name,transid,currentdate(包括時間)
每月摘要表字段 :userid,resourceid,doc_name,transid,currentdate(不包括時間),trans_count
我也可以使用Java或groovy來做到這一點。但是我認為plsql可能是最好的?
您想在這里做兩件事。 我假設您正在使用Oracle(就像您在使用Java)。
首先,您希望將每個用戶的日常交易分組。
創建一個名為tempTable
的登台表。
使用to_char(currentdate, 'yyyy/mm/dd')
進行分組。
INSERT INTO tempTable
SELECT
userid,
resourceid,
doc_name,
trans_id,
to_char(currentdate, 'yyyy/mm/dd') as currentday,
to_char(currentdate, 'MM') as month_value,
count(*) as daily_count
FROM
usertransaction
GROUP BY
userid,
resourceid,
doc_name,
trans_id,
to_char(currentdate, 'yyyy/mm/dd')
如果您有太多的數據行,我建議您改為執行此操作; 每天做一次。
INSERT INTO tempTable
SELECT
userid,
resourceid,
doc_name,
to_char(currentdate, 'yyyy/mm/dd') as currentday,
to_char(currentdate, 'MM') as month_value,
count(*) as daily_count
FROM
usertransaction
WHERE
to_char(currentdate, 'yyyy/mm/dd') = to_char(SYSDATE, 'yyyy/mm/dd')
GROUP BY
userid,
resourceid,
doc_name,
trans_id
其次,您將要根據month_value
進行多次插入。
INSERT INTO txn_jan
SELECT
userid,
resourceid,
doc_name,
to_date(current_day, 'yyyy/mm/dd') as current_day,
daily_count
FROM
tempTable
WHERE month_value='01'
INSERT INTO txn_feb
SELECT
userid,
resourceid,
doc_name,
to_date(current_day, 'yyyy/mm/dd') as current_day,
daily_count
FROM
tempTable
WHERE month_value='02'
然后繼續
這樣的事情可能就是您想要的:
INSERT INTO txn_jan
SELECT userid, resourceid, doc_name, transid,
cast(currentdate as date) as currentdate,
count(*) as trans_count
FROM usertransaction
WHERE extract(year from currentdate) = 2012
and extract(month from currentdate) = 1
GROUP BY cast(currentdate as date)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.