mysql中建立維表 Mysql建立日期維表

2021-10-18 15:31:23 字數 4347 閱讀 3890

說明日期維主要為與日期相關的維度, 主要包括, 周/月/季度/年等聚合維度的關聯計算.

建立維表drop table if exists dim_date;

create table dim_date

(date_key bigint comment 'primary key',

date_id date comment 'yyyy-mm-dd',

date_short varchar(25) comment 'yyyymmdd',

date_long varchar(25) comment 'yyyy年mm月dd日',

week_short_start_friday varchar(25) comment 'ww',

week_of_year_short_start_friday varchar(25) comment 'yyyyww',

week_of_year_long_start_friday varchar(25) comment '2023年第00周',

week_short varchar(25) comment 'ww',

week_of_year_short varchar(25) comment 'yyyyww',

week_of_year_long varchar(25) comment '2023年第00周',

month_short varchar(25) comment 'mm',

month_of_year varchar(25) comment 'yyyy-mm',

month_of_year_short varchar(25) comment 'yyyymm',

month_of_year_long varchar(25) comment 'yyyy年第mm月',

quarter_short tinyint comment '1,2,3,4',

quarter_long varchar(25) comment 'q1,q2,q3,q4',

quarter_of_year_short varchar(25) comment 'yyyyq',

quarter_of_year_long varchar(25) comment 'yyyy年第q季度',

year_short varchar(25) comment 'yyyy',

year_long varchar(25) comment 'yyyy年',

is_holiday tinyint comment '1,0',

description varchar(255) comment '備註',

primary key (`date_key`)

)engine=myisam default charset=utf8;

建立儲存過程create procedure f_dim_date(in start_date varchar(20), in date_count int)

begin

declare i int;

set i=0;

set start_date = str_to_date('2018-09-09','%y-%m-%d %h:%i:%s');

delete from dim_date;

while i < date_count do

insert into dim_date

(date_key,

date_id,

date_short,

date_long,

week_short_start_friday,

week_of_year_short_start_friday,

week_of_year_long_start_friday,

week_short,

week_of_year_short,

week_of_year_long,

month_short,

month_of_year,

month_of_year_short,

month_of_year_long,

quarter_short,

quarter_long,

quarter_of_year_short,

quarter_of_year_long,

year_short,

year_long,

is_holiday,

description)

select

i date_key,

start_date date_id,

date_format(start_date,'%y%m%d') date_short,

date_format(start_date,'%y年%m月%d日') date_long,

date_format(date_add(start_date,interval 4 day),'%u') week_short_start_friday,

date_format(start_date,'%y%u') week_of_year_short_start_friday,

date_format(start_date,'%y年第%u周') week_of_year_long_start_friday,

date_format(start_date,'%u') week_short,

date_format(start_date,'%y%u') week_of_year_short,

date_format(start_date,'%y年第%u周') week_of_year_long,

date_format(start_date,'%m') month_short,

date_format(start_date,'%y-%m') month_of_year,

date_format(start_date,'%y%m') month_of_year_short,

date_format(start_date,'%y年第%m月') month_of_year_long,

quarter(start_date) quarter_short,

concat('q',quarter(start_date)) quarter_long,

concat(date_format(start_date,'%y'),quarter(start_date)) quarter_of_year_short,

concat(date_format(start_date,'%y'),'年第',quarter(start_date),'季度') quarter_of_year_long,

date_format(start_date,'%y') year_short,

date_format(start_date,'%y年') year_long,

case when dayofweek(start_date)=1 or dayofweek(start_date)=7 then 1 else 0 end is_holiday,

'' description

from dual;

set i=i+1;

set start_date = date_add(start_date,interval 1 day);

end while;

end;

執行 call f_dim_date('2015-01-01',365) 生成維表

新增維表屬性

新增列:

alter table dim_date add column first_date_of_week varchar(25);

alter table dim_date add column last_date_of_week varchar(25);

更新列值

update dim_date,

select

week_of_year_short_start_friday,

min(date_id) first_date_of_week,

max(date_id) last_date_of_week

from

dim_date

group by

week_of_year_short_start_friday

) vset dim_date.first_date_of_week = v.first_date_of_week,

dim_date.last_date_of_week = v.last_date_of_week

where

dim_date.week_of_year_short_start_friday = v.week_of_year_short_start_friday

mysql創表 mysql建立表

1 說明 此檔案包含了blog資料庫中建立所有的表的mysql語句.2 3 在sql語句中注意 約束的概念 4 1.實體完整性約束 主鍵 唯一且非空 primary key 5 違約處理 no action 拒絕執行 6 7 2.參照完整性約束 外來鍵約束 foregin key reference...

mysql 無法建立表 MYSQL 不能建立表

can t create table ticket user role.frm errno 121 語法是對的,但顯示上面的錯誤 原因有三種 1 表名重複 2 以該名字命名的表之前建立過後來刪除了,但是對應的.frm檔案還留在磁碟上 3 主鍵名字在全資料庫範圍內不是唯一的 我出現的時候是第三個 ke...

mysql表如何建立 如何建立mysql表?

mysql中建立資料表的語法為 create table table name column name column type 在mysql 提示符下,建立乙個mysql表這是很容易的。使用 sql 命令 create table 來建立表。在建立表前需要使用use databasename命令選擇...