1、創(chuàng)建測試表;
成都創(chuàng)新互聯(lián)專注于企業(yè)全網營銷推廣、網站重做改版、北京網站定制設計、自適應品牌網站建設、HTML5、成都商城網站開發(fā)、集團公司官網建設、外貿網站建設、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為北京等各大城市提供網站開發(fā)制作服務。
create table test_type_num(type varchar2(20),cardNo varchar2(20),orgName varchar2(20));
2、插入測試數(shù)據(jù);
insert into test_type_num values('1','201103','日本');
insert into test_type_num values('1','201104','中國');
insert into test_type_num values('2','201105','中國');
insert into test_type_num values('2','201106','中國');
insert into test_type_num values('2','201107','日本');
commit;
3、查詢表中全量數(shù)據(jù);select t.*, rowid from test_type_num t;
4、編寫語句,統(tǒng)計同一類型的記錄的條數(shù);
select t.*, count(1) over(partition by type, orgname) cnt from test_type_num t ;
在oracle10g中統(tǒng)計所有表的數(shù)據(jù)量可以使用如下語句:
select sum(NUM_ROWS) from dba_tables where owner like 'SCHEMA';
說明一下,以上語句必須用dba賬戶登錄才可以使用,其中的SCHEMA參數(shù)就是當前用戶名。
chema為數(shù)據(jù)庫對象的集合,為了區(qū)分各個集合,我們需要給這個集合起個名字,這些名字就是我們在企業(yè)管理器的方案下看到的許多類似用戶名的節(jié)點,這些類似用戶名的節(jié)點其實就是一個schema,schema里面包含了各種對象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。
一個用戶一般對應一個schema,該用戶的schema名等于用戶名,并作為該用戶缺省schema。這也就是我們在企業(yè)管理器的方案下看到schema名都為數(shù)據(jù)庫用戶名的原因。
最簡單的理解:以你計算機的用戶為例,如果你的計算機有3個用戶,那么每個用戶登錄系統(tǒng)看到的(使用的)功能是可以不相同的!
精確的只能 select count(*) from user1 這樣的語句
粗略的考慮 select t.table_name ,t.num_runs from user_tables t where t.table_name like 'USER%' ;為了增加準確性,可以在查詢之前收集一下統(tǒng)計信息。
analyze table table_name COMPUTE STATISTICS\x0d\x0a對表分析后在使用\x0d\x0aselect count(^) from table_name \x0d\x0a如果你的table_name 有主鍵 ID\x0d\x0aselect count(ID) from table_name 在統(tǒng)計的時候會用到主鍵索引
create or replace procedure tj_data is
-- 當前存儲過程用到的變量
v_tableName VARCHAR2(100);
v_sql varchar2(200);
v_count integer;
-- 獲取當前數(shù)據(jù)庫中的所有表
CURSOR TABLE_LOOP IS SELECT Table_name FROM User_tables;
BEGIN
-- 打開游標
OPEN TABLE_LOOP;
LOOP
FETCH TABLE_LOOP INTO v_tableName;
EXIT WHEN TABLE_LOOP %NOTFOUND;
v_sql:= 'select count(1) from '||v_tableName;
execute immediate v_sql into v_count;
dbms_output.put_line(v_tableName||':'||v_count);
END LOOP;
CLOSE TABLE_LOOP;
end tj_data;
使用pl/Sql運行該存儲過程,在DBMS Output窗口下可看到統(tǒng)計結果。(把Buffer size值適當調大一點)
可以通過district來取出字段,之后通過count計算總數(shù)量。
sql:select count(district id) from tablename;
如果id字段沒有空值的話,可以通過count統(tǒng)計字段的總數(shù)量(字段內容可能重復)。
sql:select count(id) from tablename;