当前位置:首页 » 编程语言 » sql统计表

sql统计表

发布时间: 2022-08-30 18:15:59

A. 如何用sql统计数据库表的大小

表统计信息是数据库基于成本的优化器最重要的参考信息;统计信息不准确,优化器可能给出不够优化的执行计划或者是错误的执行计划。对统计信息的计算分为非持久化统计信息(实时计算)与持久化统计信息。
非持久化统计信息
统计信息没有保存在磁盘上,而是频繁的实时计算统计信息;
每次对表的访问都会重新计算其统计信息;
假设针对一张大表的频繁查询,那么每次都要重新计算统计信息,很耗费资源。

持久化统计信息
把一张表在某一时刻的统计信息值保存在磁盘上;
避免每次查询时重新计算;
如果表更新不是很频繁,或者没有达到 MySQL 必须重新计算统计信息的临界值,可直接从磁盘上获取;
即使 MySQL 服务重启,也可以快速的获取统计信息值;
统计信息的持久化可以针对全局设置也可以针对单表设置。
接下来,详细说 MySQL 统计信息如何计算,何时计算,效果评估等问题。在 MySQL Server 层来控制是否自动计算统计信息的分布,并且来决策是持久化还是非持久化。

B. 用SQL语句统计一个表有多少列

SQL SERVER:
select NAME from syscolumns
where id = OBJECT_ID('表名');所有列名称,
select count(*) from syscolumns
where id = OBJECT_ID('表名');列的数量
ORACLE:用户名和表名都大写
select column_name,data_type from all_tab_columns
where owner='用户名' and table_name='表名';所有列名称
select count(*) from all_tab_columns
where owner='用户名' and table_name='表名';列的数量
有问题再留言

C. SQL 统计报表

-- create sample table
create table tab1 (id int, output_style char(1), amount int, output_date date);

insert into tab1 values(1,'D',1000,'2009-11-12');
insert into tab1 values(2,'C',1000,'2009-11-12');
insert into tab1 values(3,'G',1000,'2009-12-12');
insert into tab1 values(4,'Z',1000,'2010-01-01');
insert into tab1 values(5,'D',1300,'2009-11-12');
insert into tab1 values(6,'C',1400,'2009-11-12');
insert into tab1 values(7,'G',2000,'2009-12-12');
insert into tab1 values(8,'Z',1000,'2010-01-01');

-- query
select concat(year(output_date), month(output_date)) as yearmonth,
sum(case when output_style='C' then amount else 0 end) as C_Amount,
sum(case when output_style='G' then amount else 0 end) as G_Amount,
sum(case when output_style='Z' then amount else 0 end) as Z_Amount,
sum(case when output_style='D' then amount else 0 end) as D_Amount from tab1 group by output_date

D. sql如何查询一个表并统计表内的数据条数

其实使用select count(1) from Tablename就可以了,没有必要在里面写字段名的,这样效率是最高的,后面你也可以跟上条件!

E. 关于Oracle中的SQL生成统计表

select a.CostRegisterNo 编号,a.TopicNo 项目号,sum(nvl(a.bjf,0)) 编校费,sum(nvl(a.ysf,0)) 印刷费,sum(nvl(a.zbf,0)) 制版费
from
(select CostRegisterNo,
TopicNo,
sum(case when CostName='编校费' then CostAmt end) bjf,
sum(case when CostName='印刷费' then CostAmt end) ysf,
sum(case when CostName='制版费' then CostAmt end) zbf
from t group by CostRegisterNo,
TopicNo) a
group by a.CostRegisterNo ,a.TopicNo ;

---补充---
select a.CostRegisterNo 编号,a.TopicNo 项目号,
sum(nvl(a.bjf,0)) 编校费,sum(nvl(a.ysf,0)) 印刷费,sum(nvl(a.zbf,0)) 制版费
from
(select CostRegisterNo,
TopicNo,
sum(decode(CostName,'编校费', CostAmt)) bjf,
sum(decode(CostName,'印刷费', CostAmt)) ysf,
sum(decode(CostName,'制版费', CostAmt)) zbf
from t group by CostRegisterNo,
TopicNo) a
group by a.CostRegisterNo ,a.TopicNo ;

表名我定义的是t,你可以换一下
这里用了个nvl函数,这个主要的意思就是将查询出来的结果为空的转成0

F. SQL多表查询统计怎么弄

既然两个表的结构一模一样,如果想统计人名出现的总数,可以将两个表先用union all合并到一起,然后再对其进行统计。

例如,有下面两个表:成绩表A、成绩表B,这两个表的结构是完全一样的,分别都有20条记录,但两个表有部分记录是重复的:

如果将两个表合并到一起,可以使用union all。注意,这里必须加上all,否则,那些重复的记录就会被排除掉了,从而导致出现的总数不准确。例如,下面的语句没有加all,输出的姓名记录数只有25个,有另外15个重复的被排除掉了:

所以,一定要加上all。这样得到两个表的合集后,再用括号将其包起来,把它作为一个表来处理,再次统计即可。sql语句如下:

select 姓名,count(*) as 出现次数 from (select 姓名 from 成绩表A union all select 姓名 from 成绩表B) group by 姓名

统计结果如下图:

我是人民邮电出版社签约作者,着有多本与B/S、C/S开发方面的专业书籍,欢迎关注并一起交流提高,谢谢!

G. 如何创建一个SQL的累计统计表

1、第一步,创建一个测试表,见下图,转到下面的步骤。

H. SQL如何统计多表总记录数

有2个方法:
1、select
*,(select
count(u_id)
from
h_travel_line
where
u_id
=
a.u_id)
已线路数
from
h_travel
a
2、SELECT
c.ttt
AS
已线路数,
h_travel.*
FROM
h_travel
INNER
JOIN
(SELECT
COUNT(*)
AS
ttt,
u_id
FROM
h_travel_line
GROUP
BY
STID)
c
ON
h_travel.u_id
=c.u_id

热点内容
php批量查询 发布:2025-01-16 10:43:38 浏览:917
适合搭建代理服务器的云 发布:2025-01-16 10:42:49 浏览:428
我的世界手机版服务器怎么注册 发布:2025-01-16 10:41:30 浏览:614
小米云电视服务器 发布:2025-01-16 10:37:03 浏览:350
php开源wiki 发布:2025-01-16 10:27:19 浏览:189
sql加字段备注 发布:2025-01-16 10:21:49 浏览:565
线割编程教程 发布:2025-01-16 10:21:03 浏览:18
谷歌浏览器缓存删除 发布:2025-01-16 10:19:36 浏览:414
数据库txt 发布:2025-01-16 10:16:41 浏览:457
小米账号王者传奇脚本挂机 发布:2025-01-16 10:07:25 浏览:917