`
evilgod
  • 浏览: 48441 次
社区版块
存档分类
最新评论

mysql中创建时间维度

阅读更多

http://blog.csdn.net/wisgood/article/details/26018613

 

  • Small-numbers table

 

DROP TABLE IF EXISTS numbers_small;
CREATE TABLE numbers_small (number INT);
INSERT INTO numbers_small VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);

  • Main-numbers table

DROP TABLE IF EXISTS numbers;
CREATE TABLE numbers (number BIGINT);
INSERT INTO numbers
SELECT thousands.number * 1000 + hundreds.number * 100 + tens.number * 10 + ones.number
FROM numbers_small thousands, numbers_small hundreds, numbers_small tens, numbers_small ones
LIMIT 1000000;

  • Create Date Dimension table

DROP TABLE IF EXISTS Dates_D;
CREATE TABLE Dates_D (
date_id          BIGINT PRIMARY KEY,
date             DATE NOT NULL,
day              CHAR(10),
day_of_week      INT,
day_of_month     INT,
day_of_year      INT,
previous_day     date NOT NULL default '0000-00-00',
next_day         date NOT NULL default '0000-00-00',
weekend          CHAR(10) NOT NULL DEFAULT "Weekday",
week_of_year     CHAR(2),
month            CHAR(10),
month_of_year    CHAR(2),
quarter_of_year INT,
year             INT,
UNIQUE KEY `date` (`date`));

  • First populate with ids and Date

INSERT INTO Dates_D (date_id, date)
SELECT number, DATE_ADD( '2010-01-01', INTERVAL number DAY )
FROM numbers
WHERE DATE_ADD( '2010-01-01', INTERVAL number DAY ) BETWEEN '2010-01-01' AND '2010-12-31'
ORDER BY number;

Change year start and end to match your needs. The above sql creates records for year 2010.

  • Update other columns based on the date.

UPDATE Dates_D SET
day             = DATE_FORMAT( date, "%W" ),
day_of_week     = DAYOFWEEK(date),
day_of_month    = DATE_FORMAT( date, "%d" ),
day_of_year     = DATE_FORMAT( date, "%j" ),
previous_day    = DATE_ADD(date, INTERVAL -1 DAY),
next_day        = DATE_ADD(date, INTERVAL 1 DAY),
weekend         = IF( DATE_FORMAT( date, "%W" ) IN ('Saturday','Sunday'), 'Weekend', 'Weekday'),
week_of_year    = DATE_FORMAT( date, "%V" ),
month           = DATE_FORMAT( date, "%M"),
month_of_year   = DATE_FORMAT( date, "%m"),
quarter_of_year = QUARTER(date),
year            = DATE_FORMAT( date, "%Y" );

 

 

 

分享到:
评论

相关推荐

    数据仓库日期维度表创建存储过程

    数据仓库是一种特殊设计的数据库系统,用于支持企业的决策分析过程,它主要关注...通过这三个文件,我们可以学习到如何在SQL Server、Oracle和MySQL中创建和维护日期维度表,进一步提升我们在数据仓库领域的专业能力。

    生成时间维度表的存储过程

    使用存储过程来创建时间维度表有以下优点: - **性能优化**:预编译的代码执行速度更快。 - **代码重用**:一次编写,多次调用。 - **安全性**:可以通过权限控制限制对敏感数据的访问。 - **封装复杂逻辑**:将...

    mysql 统计一天24小时数据默认补0SQL

    1. **创建一个包含过去7天日期的临时表**:类似于创建24小时的时间表,我们可以创建一个包含过去7天日期的临时表。 2. **统计每天的任务创建数量**:从任务表中统计过去7天每天的任务创建数量。 3. **执行左连接...

    foodmart数据for mysql

    1. **创建数据库**:首先,在MySQL中创建一个新的数据库,例如命名为“foodmart”。 2. **运行脚本**:使用MySQL客户端工具(如MySQL Workbench或命令行),执行“foodmart-mysql”中的SQL文件。这些文件将创建数据...

    数据仓库建模 Powerdesigner 维度建模 软件分析 建模 视频教程

    2. **定义维度表**: 维度表描述了观察事实的角度,例如时间维度、地理位置维度等。PowerDesigner提供了便捷的工具来设计这些表,并支持层次结构的建立。 3. **关系连接**: 在PowerDesigner中,可以轻松地定义事实表...

    foodmart-mysql.rar

    FoodMart数据集是一个模拟的超市销售数据,涵盖了商品、销售、时间等多个维度,为用户提供了丰富的分析素材。通过运行这个SQL脚本,我们可以将FoodMart数据仓库导入到MySQL数据库中,为后续的分析工作提供数据基础。...

    MySQL内幕揭秘:探索MySQL调优指南,解锁MySQL的强大功能

    在性能调优方面,MySQL的优化策略主要涉及以下几个维度: 1. **SQL及索引优化**:优化SQL查询语句是提升性能的核心。这可以通过创建合适的索引、避免函数操作符在WHERE子句中、减少子查询等方式实现。开启慢查询...

    Java课程设计——饭卡管理系统(JavaSwing、JavaFX、MySQL)

    * 创建时间:2021-6-21 * 采用JavaSwing、JavaFX设计UI界面,结合MySQL数据库进行增删改查操作,功能较为完善 * 包含数据库文件、ER图、数据库表的设计、系统功能图、逻辑设计(流程图) * 源文章及其效果见: ...

    老黄历数据库mysql脚本

    为了创建和使用这个老黄历数据库,你需要使用SQL(结构化查询语言),通过`lunar.sql`文件导入数据到MySQL数据库。导入过程可能涉及到创建表结构、设置字段类型、加载数据等步骤。一旦数据导入成功,你可以通过SQL...

    基于C#和Mysql的学生信息管理系统

    1. 学生信息录入:管理员可以通过系统界面输入新生的信息,包括个人基本信息和学业成绩,这些数据会被保存到MySQL数据库中。 2. 学生信息查询:系统提供多种查询方式,如按学号、姓名或班级查找学生,结果以列表或...

    linux运维学习笔记:MySQL运维基础面试问答题42题.pdf

    综上所述,这份学习笔记详细地覆盖了MySQL运维的各个方面,从基础概念、数据类型、数据库操作、安全加固、实例管理、日志管理等多个维度,为学习者提供了全面的参考资料。对于想要深入学习MySQL的运维人员来说,这份...

    淘宝分类数据mysql

    【淘宝分类数据MySQL】指的是淘宝平台的商品分类信息存储在MySQL数据库中的数据集合。这个压缩包文件`taobao20190803003338.sql`很可能包含了2019年8月3日某个时间点的淘宝商品分类数据库的SQL脚本或者数据备份。...

    Mysql时间轴数据 获取同一天数据的前三条

    总结来说,MySQL提供了丰富的函数和操作来处理时间轴数据,包括获取同一天的特定数量记录和自动生成时间维度表。这些功能在数据处理和分析中扮演着重要角色,使得对时间序列数据的操作更加灵活高效。

    foodmart数据为mysql

    《食品市场数据库在MySQL中的应用——以Mondrian的FoodMart示例为例》 在信息技术领域,数据分析和商业智能(BI)是至关重要的部分。Mondrian是一个开源的多维在线分析处理(OLAP)服务器,它允许用户通过查询多维...

    很强大的数据仓库实验步骤

    - **创建时间维度**:在向导中选择“新建维度”并指定“时间”作为维度名称。 - **配置时间维度属性**:定义层级结构,如年、季度、月等;设置日期格式和其他相关属性。 **3.4 如何建立产品维度** - **创建产品维度...

    mysql performance live 2013

    在2013年的MySQL性能直播分享中,Dimitri Kravtchuk作为MySQL性能架构师,围绕MySQL 5.6版本的性能基准测试、调优实践以及最佳策略进行了深入探讨。以下是根据提供的信息整理出的关键知识点。 #### MySQL性能优化的...

    DataWarehousing

    3. **加载**(Load):将处理后的数据加载到数据仓库中,通常分为两种方式:批量加载(在特定时间点一次性导入大量数据)和实时/近实时加载(如CDC,变更数据捕获)。 "scripts"文件可能包含SQL脚本,用于创建数据...

    MySQL 数据库如何解决高并发问题

    - **分表**:水平拆分(按时间或其他维度分表)和垂直拆分(将表字段按业务需求划分)。 - **分离活跃数据**:热点数据放入活跃表,优先查询,未命中再查询全量数据。 - **分块**:数据分块策略,通过预计算定位...

    在mysql数据库中,建日历表

    ### 在MySQL数据库中构建日历表 ...这样的日历表不仅方便了时间维度的查询和分析,而且通过自动化填充机制大大提高了效率。在实际应用中,这样的设计可以广泛应用于报表系统、数据分析平台等多种场景。

    mysql实现的排行榜

    在MySQL中,我们可以创建这样的表: ```sql CREATE TABLE rankings ( id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, score INT NOT NULL, type ENUM('日', '周', '月', '总') NOT NULL, ...

Global site tag (gtag.js) - Google Analytics