㈠ oracle 大表,创建分区表如何按月分区 求详细sql
create table xxx(id number,time date)
parttion by range(time)
(partion part1 values less than (to_date('2012-01-31','歼唤拿yyyy-mm-dd'氏搭)) tablespace tb1,
partion part 2 vales less than(to_date('链基2012-01-31','yyyy-mm-dd')) tablespace tb2);
㈡ db2数据库 怎么按日或者按月 自动创建表分区
CREATE TABLE lineitem(l_orderkey DECIMAL(10,0) NOT NULL, l_cpartkey INTEGER, l_suppkey INTEGER, l_linenumber INTEGER, l_quantity DECIMAL(12,2), l_extendedprice DECIMAL(12,2), l_discount DECIMAL(12,2), l_tax DECIMAL(12,2), l_returnflag CHAR(1), l_linestatus CHAR(1), l_shipdate DATE, l_commitdate DATE, l_receiptdate DATE, l_shipinstruct CHAR(25), l_shipmode CHAR(10), l_comment VARCHAR(44)) PARTITION BY RANGE(l_shipdate) (STARTING MINVALUE, STARTING '1/1/2000' ENDING '31/12/2020' EVERY 1 YEAR(按月就是 MONTH), ENDING MAXVALUE);
㈢ SQL把日期按月分类,汇总相关数据
不知道你是什么数据库,只能写个意思,具体的内容要你自己搞定。
其实就是把日期字段截取一下,如果日期本身没办法截取,那就转换一下。比如如果是oracle那么可以用to_char转换为字符型,然后再截取。如果担心1月和10月截取重复,那就多截取一位,或者查找第二个/字符的位置截取。
截取完成后,在用截取后的日期和客户分组,金额汇总求和就可以了。
我比较熟悉oracle,我用oracle的写法尝试这写一个,如果不是oracle,那么你就要自己找找类似的了。(日期也可以直接截取,不过好长时间没写忘记怎么写了,就写一个转换的吧)
select substr(to_char(日期),1,instr(to_char(日期),'/',1,2)-1) 月份,客户,sum(金额汇总) from table group by substr(to_char(日期),1,instr(to_char(日期),'/',1,2)-1) ,客户
㈣ sql 分类按月统计
方法一:这种方法列名是固定的。
select 名称,
sum(case when substring(convert(varchar(7),日期,120),6,2)='09' then 出售数量 else 0 end) as '9月',
sum(case when substring(convert(varchar(7),日期,120),6,2)='10' then 出售数量 else 0 end) as '10月'
from 表
group by 名称
方法二:这种方法虽然麻烦一些,但是支持列名不确定的情况。
declare @sql varchar(2000)
declare @mon varchar(2)
set @sql = 'select 名称'
select @sql = @sql + ',sum(case mon when '''+mon+''' then 出售数量 end) ['+mon+'月]'
from (select distinct substring(convert(varchar(7),日期,120),6,2) mon from 表) as a
select @sql = @sql+' from 表 group by 名称'
exec(@sql)
㈤ plsql自定义按月分组怎么写
在你存储过程里加个存放时间的表。然后用它来左连接
——--网络不给我贴代码我晕
㈥ MySQL按月自动创建分区表(千万级大表优化)
对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成,实现分区的代码实碰型知际上是通过对一组底层表的对象封装,但对SQL层来说是一个完全封装底层的黑盒子。
MySQL实现分区的方式也意味着索引也是按照分区的子表定义, 没有全局索引 。
分区的意思是指将同一表中不同行的记录分配到不同的物理文件中 ,几个分区就有几个.idb文件。MySQL数据库的分区是局部分区索引,一个分笑消区中既存了数据,又放了索引。也就是说,每个区的聚集索引和非聚集索引都放在各自区的(不同的物理文件)。
1、可以让单表 存储更多的数据 。
2、 分区表的数据更容易维护 ,可以通过删除与那些数据有关的分区,更容易删除数据,也可以增加新的分区来支持新插入的数据。另外,还可以对一个独立分区进行优化、检查、修复等操作。
3、部分查询能够从查询条件确定只落在少数分区上租薯, 查询速度会很快 。
4、通过跨多个磁盘来分散数据查询,来 获得更大的查询吞吐量 。
要使定时事件起作用,MySQL的常量GLOBAL event_scheler必须为on或者是1。
1、查看scheler的当前状态:
2、修改scheler状态为打开(0:off , 1:on):
3、临时打开定时器(四种方法):
4、永久生效的方法,修改配置文件my.cnf
5、临时开启某个事件
6、临时关闭某个事件
㈦ 如何使用SQLServer数据库按月创建表分区
create table xxx(id number,time date)
parttion by range(time)
(partion part1 values less than (to_date('2012-01-31','yyyy-mm-dd')) tablespace tb1,
partion part 2 vales less than(to_date('2012-01-31','yyyy-mm-dd')) tablespace tb2);
㈧ 在pl/sql的sql语句中如何取按月份分区中的上个月的数据
自动?
partition都是create建立完成的
名字在不drop的情况下不重建是不会更改
你还是看看你的partition的ddl吧
看你怎么create的,应该是你那个月份小于等于建立的吧
不过你后来说的自动变成,是什么意思?
------------------补充------------------------
把200903转化为date型,然后-1,得到上一个月的年月200902,然后统计200902的数据,也就是多设置个变量的问题吧,加句sql语句,其他没什么影响
㈨ SQL 2005 如何按月把表分区
创建分碧缺区迟慧悔函数
按月区分的例子 (目前只有前3季度)
CREATE PARTITION FUNCTION sale_date_part_func(DATETIME)
AS RANGE RIGHT FOR VALUES(
CONVERT(DATETIME, '2010-01-01 00:00:00', 120),
CONVERT(DATETIME, '2010-02-01 00:00:00', 120),
CONVERT(DATETIME, '2010-03-01 00:00:00'码正, 120),
CONVERT(DATETIME, '2010-04-01 00:00:00', 120),
CONVERT(DATETIME, '2010-05-01 00:00:00', 120),
CONVERT(DATETIME, '2010-06-01 00:00:00', 120),
CONVERT(DATETIME, '2010-07-01 00:00:00', 120),
CONVERT(DATETIME, '2010-08-01 00:00:00', 120),
CONVERT(DATETIME, '2010-09-01 00:00:00', 120)
);
go
创建分区架构(Schema)
CREATE PARTITION SCHEME sale_date_part_sche
AS PARTITION sale_date_part_func
TO (
[PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY], [PRIMARY], [PRIMARY],
[PRIMARY]
);
go
创建分区表
CREATE TABLE sale_data (
sale_date DATETIME NOT NULL ,
sale_item VARCHAR(2) NOT NULL ,
sale_money DECIMAL(10,2) NOT NULL
) ON sale_date_part_sche(sale_date);
go
㈩ SQL按月统计,按日分组
declare @yf int
declare @rqxx varchar (30)
declare @rqsx varchar (30)
set @yf = '' --输入月份
set @rqxx =convert(varchar(30),@yf-1)+'月'+'26日'+'14:30:00'
set @rqxx =convert(varchar(30),@yf)+'月'+'25日'+'14:30:00'
select sum(交易量) from a where 交易时间 between @rqxx and @rqsx
这个只是个思路
上面我把@rqxx,@rqsx 定义为 varchar 你在具体定义时 要和a中交易时间一致,时间格式也要改 而且这个月份只能实现 2月--12月查询 有需要的话自己改下