SQL语句如何统计数据库当日信息数量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句如何统计数据库当日信息数量相关的知识,希望对你有一定的参考价值。
我想用一条SQL语句统计出数据库当日信息数量
如何写
其实统计我也会,只是不知道怎么能是当日的
我数据库中日期的格式为XXXX-XX-XX XX:XX:XX
查询语句可以这样写,假设我们要查询2006年6月1日这一天的数据量。我不知道你的时间字段是不是datetime类型,所以进行了转换。
select count(*)
from 表
where convert(varchar(8),cast(时间字段 as datetime),112)='20060601'
把“表”和“时间字段”替换成实际的名称就可以了 参考技术A 用分组,组内计数就可以了,意思就是根据字段a的取值进行分组,相同的为一组,在用count进行组内计数
select
a,count(*)
from
a
group
by
a 参考技术B 表统计信息是数据库基于成本的优化器最重要的参考信息;统计信息不准确,优化器可能给出不够优化的执行计划或者是错误的执行计划。对统计信息的计算分为非持久化统计信息(实时计算)与持久化统计信息。
非持久化统计信息
统计信息没有保存在磁盘上,而是频繁的实时计算统计信息;
每次对表的访问都会重新计算其统计信息;
假设针对一张大表的频繁查询,那么每次都要重新计算统计信息,很耗费资源。
持久化统计信息
把一张表在某一时刻的统计信息值保存在磁盘上;
避免每次查询时重新计算;
如果表更新不是很频繁,或者没有达到 mysql 必须重新计算统计信息的临界值,可直接从磁盘上获取;
即使 MySQL 服务重启,也可以快速的获取统计信息值;
统计信息的持久化可以针对全局设置也可以针对单表设置。
接下来,详细说 MySQL 统计信息如何计算,何时计算,效果评估等问题。在 MySQL Server 层来控制是否自动计算统计信息的分布,并且来决策是持久化还是非持久化。
如何使用SQL语句,实现多条件分组统计
搂主的SQL
语句,有2点问题
其一.
ACCESS
不支持
CASE
WHEN
要使用
IIF
函数来替换
语法
IIf(expr,
truepart,
falsepart)
IIf
函数的语法包含以下参数
(参数:为操作、事件、方法、属性、函数或过程提供信息的值。):
参数
说明
expr
必选。要计算的表达式。
truepart
必选。expr
为
True
时返回的值或表达式。
falsepart
必选。expr
为
False
时返回的值或表达式。
其二.
count
使用的不正确,
应该修改为
sum
select
型号,count(
...
)
as
未报废数量
最后的SQL,
尝试修改为:
select
型号,
sum
(
iif
(
是否报废='否'
,
型号
,
0
)
)
as
未报废数量,
sum(
iif
(
是否借出='是',
型号,
0
)
)
as
已借出数量
from
a
group
by
型号
看看能否获得正确结果么? 参考技术A with
t
as
(
select
'a1'
as
"型号"
,'是'
as
"是否报废",''
as
"是否借出"
from
dual
union
all
select
'a1'
as
"型号"
,'否'
as
"是否报废",'是'
as
"是否借出"
from
dual
union
all
select
'a1'
as
"型号"
,'否'
as
"是否报废",''
as
"是否借出"
from
dual
union
all
select
'b1'
as
"型号"
,'是'
as
"是否报废",''
as
"是否借出"
from
dual
union
all
select
'b1'
as
"型号"
,'是'
as
"是否报废",''
as
"是否借出"
from
dual
union
all
select
'b1'
as
"型号"
,'否'
as
"是否报废",''
as
"是否借出"
from
dual
union
all
select
'c1'
as
"型号"
,'否'
as
"是否报废",'是'
as
"是否借出"
from
dual
union
all
select
'c1'
as
"型号"
,'否'
as
"是否报废",'是'
as
"是否借出"
from
dual
union
all
select
'c1'
as
"型号"
,'否'
as
"是否报废",''
as
"是否借出"
from
dual
)
select
"型号",
count(case
when
"是否报废"
=
'否'
then
"是否报废"
end
)
as
"未报废数量",
count(case
when
"是否借出"
=
'是'
then
"是否借出"
end
)
as
"已借出数量"
from
t
group
by
"型号"
order
by
"型号"
虽然在ORACLE中实现的
但是SQL语句简单修改就可以使用了 参考技术B 用分组,组内计数就可以了,意思就是根据字段a的取值进行分组,相同的为一组,在用count进行组内计数select
a,count(*)from
agroup
by
a
以上是关于SQL语句如何统计数据库当日信息数量的主要内容,如果未能解决你的问题,请参考以下文章
在PL/SQL中如何用SQL语句查询数据库中所有表的数据数量?