沒(méi)太懂,不知道你怎么處理跨月的情況,這個(gè)我不考慮了。這個(gè)應(yīng)該不難,和我們的報(bào)表比差遠(yuǎn)了。
專(zhuān)注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)隴南免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
在TableA 上建立函數(shù)to_char(date,'yyyy-mm-dd')索引,你上面的查詢時(shí)不走索引的,全表掃描當(dāng)然慢。
如果想坐在一個(gè)查詢里可以這樣:
Select
Sum(Case
When date between date_min and date_max then
num
Else
End) as 當(dāng)前支數(shù),
Sum(Case
When date between date_min and date_max then
wgt
Else
End) as 當(dāng)前重量
Sum(num)as 月累計(jì)支數(shù),
Sum(wgt)as 月累計(jì)重量
From TableA
Where to_char(date,'yyyy-mm') like '2009-10%';
ALL_TAB_PARTITIONS
USER_TAB_PARTITIONSDBA_TAB_PARTITIONS
多看看oracle官方文檔中的reference,這些內(nèi)容上面都有。
select
substrb(create_time,1,4)
"年份",
sum(decode(substrb(create_time,6,2),'01',commission,0))
"1月",
sum(decode(substrb(create_time,6,2),'02',commission,0))
"2月",
sum(decode(substrb(create_time,6,2),'03',commission,0))
"3月",
sum(decode(substrb(create_time,6,2),'04',commission,0))
"4月",
sum(decode(substrb(create_time,6,2),'05',commission,0))
"5月",
sum(decode(substrb(create_time,6,2),'06',commission,0))
"6月",
sum(decode(substrb(create_time,6,2),'07',commission,0))
"7月",
sum(decode(substrb(create_time,6,2),'08',commission,0))
"8月",
sum(decode(substrb(create_time,6,2),'09',commission,0))
"9月",
sum(decode(substrb(create_time,6,2),'10',commission,0))
"10月",
sum(decode(substrb(create_time,6,2),'11',commission,0))
"11月",
sum(decode(substrb(create_time,6,2),'12',commission,0))
"12月"
from
test
group
by
substrb(create_time,1,4)
此語(yǔ)句是按create_time字段是字符型給出的,如果你的表中此字段是日期型,則進(jìn)行一下轉(zhuǎn)化
如果是oracle9i版本,可以考慮如下兩步實(shí)現(xiàn):
(10g直接執(zhí)行第二步就可以了)
統(tǒng)計(jì)一個(gè)用戶下所有表的行數(shù):
1.exec
dbms_stats.gather_schema_stats(owner='用戶名');
2.select
sum(num_rows)
from
user_tables;
統(tǒng)計(jì)全庫(kù)所有表的行數(shù):
1.exec
dbms_stats.gather_database_stats(estimate_percent='30');
2.select
sum(num_rows)
from
dba_tables;
生產(chǎn)環(huán)境中需謹(jǐn)慎考慮收集新的統(tǒng)計(jì)信息后對(duì)應(yīng)用產(chǎn)生的影響。
1、先查詢本庫(kù)的所有表,測(cè)試sql,select * from user_tables t where table_name like 'TEST%';可以看到有多張表;
2、查詢一共有幾張數(shù)據(jù)表,
select count(*) from user_tables t where table_name like 'TEST%';
3、編寫(xiě)腳本,查詢TEST開(kāi)頭表,每個(gè)表的記錄數(shù),
declare
v_sql varchar2(200);
v_cnt number(10);
begin
for v_tab in (select table_name from user_tables t where table_name like 'TEST%') loop
v_sql := 'select count(*) from '|| v_tab.table_name;
execute immediate v_sql into v_cnt;
dbms_output.put_line(v_tab.table_name||':'||v_cnt);
end loop;
end;
4、執(zhí)行該sql,在輸出窗口,可以看到每個(gè)表的輸出結(jié)果,
TEST_A:4
TEST_CERTNO:6
TEST_CLASS:4
TEST_COL_1:20
TEST_COL_2:100
TEST_CONNECT:4
TEST_DATE:0
TEST_DATE_1:199
TEST_DATE_2:99
TEST_JOB:6
TEST_LOCK:2
TEST_LOG:999
TEST_MID:328
TEST_SALESSTATISTICS:9999
TEST_STUDENT:6
TEST_SUBSTR:4
TEST_UPDATE:3
TEST_UP_A:6
TEST_UP_B:3
TEST_UP_LIKE:6
方法和詳細(xì)的操作步驟如下:
1、第一步,查詢?cè)搸?kù)中的所有表,測(cè)試sql,代碼見(jiàn)下圖,轉(zhuǎn)到下面的步驟。
2、第二步,執(zhí)行完上面的操作之后,查詢有多少個(gè)數(shù)據(jù)表,見(jiàn)下圖,轉(zhuǎn)到下面的步驟。
3、第三步,執(zhí)行完上面的操作之后,在TEST的開(kāi)頭編寫(xiě)一個(gè)查詢表的腳本,每個(gè)表中的記錄數(shù),代碼見(jiàn)下圖,轉(zhuǎn)到下面的步驟。
4、第四步,執(zhí)行完上面的操作之后,執(zhí)行sql,在輸出窗口中,可以看到每個(gè)表的輸出,見(jiàn)下圖。這樣,就解決了這個(gè)問(wèn)題了。