重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
没太懂,不知道你怎么处理跨月的情况,这个我不考虑了。这个应该不难,和我们的报表比差远了。
专注于为中小企业提供成都网站制作、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业陇南免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
在TableA 上建立函数to_char(date,'yyyy-mm-dd')索引,你上面的查询时不走索引的,全表扫描当然慢。
如果想坐在一个查询里可以这样:
Select
Sum(Case
When date between date_min and date_max then
num
Else
End) as 当前支数,
Sum(Case
When date between date_min and date_max then
wgt
Else
End) as 当前重量
Sum(num)as 月累计支数,
Sum(wgt)as 月累计重量
From TableA
Where to_char(date,'yyyy-mm') like '2009-10%';
ALL_TAB_PARTITIONS
USER_TAB_PARTITIONSDBA_TAB_PARTITIONS
多看看oracle官方文档中的reference,这些内容上面都有。
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)
此语句是按create_time字段是字符型给出的,如果你的表中此字段是日期型,则进行一下转化
如果是oracle9i版本,可以考虑如下两步实现:
(10g直接执行第二步就可以了)
统计一个用户下所有表的行数:
1.exec
dbms_stats.gather_schema_stats(owner='用户名');
2.select
sum(num_rows)
from
user_tables;
统计全库所有表的行数:
1.exec
dbms_stats.gather_database_stats(estimate_percent='30');
2.select
sum(num_rows)
from
dba_tables;
生产环境中需谨慎考虑收集新的统计信息后对应用产生的影响。
1、先查询本库的所有表,测试sql,select * from user_tables t where table_name like 'TEST%';可以看到有多张表;
2、查询一共有几张数据表,
select count(*) from user_tables t where table_name like 'TEST%';
3、编写脚本,查询TEST开头表,每个表的记录数,
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、执行该sql,在输出窗口,可以看到每个表的输出结果,
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
方法和详细的操作步骤如下:
1、第一步,查询该库中的所有表,测试sql,代码见下图,转到下面的步骤。
2、第二步,执行完上面的操作之后,查询有多少个数据表,见下图,转到下面的步骤。
3、第三步,执行完上面的操作之后,在TEST的开头编写一个查询表的脚本,每个表中的记录数,代码见下图,转到下面的步骤。
4、第四步,执行完上面的操作之后,执行sql,在输出窗口中,可以看到每个表的输出,见下图。这样,就解决了这个问题了。