1、创建测试表;
成都创新互联专注于企业全网营销推广、网站重做改版、北京网站定制设计、自适应品牌网站建设、HTML5、成都商城网站开发、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为北京等各大城市提供网站开发制作服务。
create table test_type_num(type varchar2(20),cardNo varchar2(20),orgName varchar2(20));
2、插入测试数据;
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、查询表中全量数据;select t.*, rowid from test_type_num t;
4、编写语句,统计同一类型的记录的条数;
select t.*, count(1) over(partition by type, orgname) cnt from test_type_num t ;
在oracle10g中统计所有表的数据量可以使用如下语句:
select sum(NUM_ROWS) from dba_tables where owner like 'SCHEMA';
说明一下,以上语句必须用dba账户登录才可以使用,其中的SCHEMA参数就是当前用户名。
chema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema里面包含了各种对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。
一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看到schema名都为数据库用户名的原因。
最简单的理解:以你计算机的用户为例,如果你的计算机有3个用户,那么每个用户登录系统看到的(使用的)功能是可以不相同的!
精确的只能 select count(*) from user1 这样的语句
粗略的考虑 select t.table_name ,t.num_runs from user_tables t where t.table_name like 'USER%' ;为了增加准确性,可以在查询之前收集一下统计信息。
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 在统计的时候会用到主键索引
create or replace procedure tj_data is
-- 当前存储过程用到的变量
v_tableName VARCHAR2(100);
v_sql varchar2(200);
v_count integer;
-- 获取当前数据库中的所有表
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窗口下可看到统计结果。(把Buffer size值适当调大一点)
可以通过district来取出字段,之后通过count计算总数量。
sql:select count(district id) from tablename;
如果id字段没有空值的话,可以通过count统计字段的总数量(字段内容可能重复)。
sql:select count(id) from tablename;