SQL语句做报表统计

-- 一些用到的基本SQL函数

-- 返回日期中年的值: SQL YEAR 函数。

-- 返回日期中月的值: SQL Month 函数。

-- 返回日期中日的值: SQL Day 函数。--
DATE_ADD() :函数向日期添加指定的时间间隔。

-- LAST_DAY() :返回某个时间值的当月最后一天

-- MAKEDATE():给出年份值和一年中的天数值,返回一个日期

-- CONCAT :拼接日期

-- ELT 匹配表达式

-- SQL EXTRACT() 函数用来从一个日期表达式中提取值(年,月,日等)

-- NOW():当前时间,在具体的使用中可以替换成符合DATE格式的任意时间

-- 获取当前时间 yyyy-mm--dd hh:mm:ss

SELECT NOW() AS times

-- 获取当前日期 yyyy-mm-dd

SELECT DATE(NOW()) AS times

-- 查询 年 季度 月

-- 查询月的最后一天

SELECT  LAST_DAY(NOW())AS times;

-- 查询下一月的第一天

SELECT DATE_ADD( LAST_DAY(NOW()),INTERVAL 1 DAY) AS times

-- 查询当月的第一天

SELECT DATE_ADD(DATE_ADD(LAST_DAY(NOW()),INTERVAL 1 DAY),INTERVAL -1 MONTH) AS times

-- 查询季度

-- 查询当前季度

SELECT QUARTER(NOW()) AS times

-- 查询季度的第一个月

SELECT ELT(QUARTER(NOW()),1,4,7,10) AS times

-- 获取本季度的第一天

SELECT DATE(CONCAT(YEAR(NOW()),‘-‘,ELT(QUARTER(NOW()),1,4,7,10),‘-1‘)) AS times

-- 获取本年度的第一天

SELECT MAKEDATE(EXTRACT(YEAR FROM NOW()),1) AS times

-- 获取本季度最后一天

SELECT LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM NOW()),1) + INTERVAL QUARTER(NOW())*3-1 MONTH) AS times

-- 获取本季度第一个月第一天

SELECT DATE_ADD(DATE_ADD(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM NOW()),1) + INTERVAL QUARTER(NOW())*3-3 MONTH),INTERVAL 1 DAY),INTERVAL -1 MONTH) AS times

-- 获取本季度第一个月最后一天

SELECT LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM NOW()),1) + INTERVAL QUARTER(NOW())*3-3 MONTH) AS times

-- 当然不同季度的可以通过改变后边乘的参数得到

-- 使用的一条统计语句

-- 实现对应日期季度中第一个月单个产品销量统计(对销售单做的统计) dataEx:为一个时间变量

SELECT b.productname productnames,SUM(b.ordercount) ordercounts,SUM(b.subtotal) subtotals FROM orders a,child_orders b WHERE a.id = b.orders_id AND b.productname = ‘productnames‘

AND  a.create_date >= DATE_ADD(DATE_ADD(LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM ‘"+dataEx+"‘),1) + INTERVAL QUARTER(‘"+dataEx+"‘)*3-3 MONTH),INTERVAL 1 DAY),INTERVAL -1 MONTH) AND a.create_date <= LAST_DAY(MAKEDATE(EXTRACT(YEAR FROM ‘"+dataEx+"‘),1) + INTERVAL
QUARTER(‘"+dataEx+"‘)*3-3 MONTH)

GROUP BY productnames ORDER BY a.create_date DESC

注:

当然这只是一条一条的查询语句,实现同样的功能当然还有其他的语句,这里只是我使用的觉得可以的语句,实现统计当然还有好多工作要做。

后面还需多多学习,有觉得不合适的地方,还望大神给与指点,Thanks

时间: 2024-10-11 22:38:39

SQL语句做报表统计的相关文章

vertica时间计算SQL语句实例:统计一天内登录的用户

SQL语句实例: select count(id) as num from public.user where cast((CURRENT_TIMESTAMP-login_timed) day as integer )<=1; 或 select count(id) as num from public.user where cast((CURRENT_TIMESTAMP-login_timed) hour as integer )<=24; 大家可以根据表结构稍作调整后使用 vertica时间

5、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之——使用datagrid做报表统计

需要说明一点:数据库访问我使用的是EF框架,但是在报表统计着一块由于使用到了动态表,即根据每一天单独生成了一张数据表,所以不好使用EF进行预先添加,于是我在数据库访问层里面封装了两套数据库访问框架,一个就是EF,一个就是传统的ADO.NET.当设计到使用动态表时,我就调用用ADO.NET进行数据库访问操作了. 先看下View,这里我使用的是jquery easyUI里面的datagrid来做的报表.如下: 单击选中日报: 年报如下: @model YKT.Model.SubCompanyRepo

夜黑风高的夜晚用SQL语句做了一些想做的事&#183;&#183;&#183;&#183;&#183;&#183;&#183;

     IT这条漫漫长路注定是孤独的,陪伴我们的只有那些不知冷暖的代码语句和被手指敲打的磨掉了键上的标识的键盘. 之所以可以继续坚持下去,是因为心中有一份永不熄灭的激情. 成功的路上让我们为自己带盐~~~~     想知道SQL语句的强大功能就先让我给你讲讲什么是SQL吧 SQL简介:        SQL能做什么?            专业人士说:在进行数据管理时,如果每次创建数据库,表或者从数据库中读取数据,都需要手动在SQL Server Management  Studio  中进行

sql语句按月份统计查询

select year(createdate) 年,month(createdate) 月,count(1) from public_cms_arcwhere (userid in (select id from  cms_admin where userid='392') or userid='392')group by year(createdate),month(createdate)order by year(createdate) desc,month(createdate) desc

Informix 11.5 SQL 语句性能监控方法及实现

我们知道,在数据库应用系统中,SQL 语句的性能好坏至关重要.如果 SQL 语句性能很差,可能会导致整个数据库应用系统的性能也非常差.那么,如何监控数据库系统中 SQL 语句的性能,导致 SQL 语句性能差的原因是什么? SQL 语句运行过程中对系统资源的使用情况如何?系统资源存在哪些瓶颈?在 Informix 11.5 中,主要提供了两个工具来解决上述问题.一个是 set explain 命令,我们可以通过查看数据库的查询计划来分析导致 SQL 语句性能差的原因并给予相应的调整,另一个是 SQ

如何对于几百行SQL语句进行优化?

1.最近在开发中遇到的一些关于几百行SQL语句做查询的问题,需要如何的解决优化SQL这确实是个问题,对于当下的ORM 框架 EF 以及其他的一些的开源的框架例如Drapper ,以及Sqlite-Sugar 等等,对于查询的速度以及性能确实还不错,但是对于几百条的SQL语句那么可能就不行了这些轻量级的框架扛不住.当在写SQL语句需要注意的规则都无法提高速率的时候,个人认为还是需要传统的ADO.NET 参数化的SQL来进行解决问题. 下面是我最近开发当中遇到的一些复杂的SQL的语句如何处理以及优化

mysql进阶 十九 SQL语句如何精准查找某一时间段的数据

SQL语句如何精准查找某一时间段的数据 在项目开发过程中,自己需要查询出一定时间段内的交易.故需要在sql查询语句中加入日期时间要素,sql语句如何实现? SELECT * FROM lmapp.lm_bill where tx_time Between '2015-12-20' And '2015-12-31'; 仔细研究还是能够发现一些细节性的问题的. SQL语句1 SELECT * FROM lmapp.lm_bill where merch_uid='S18853883587' AND 

利用SQL语句查询SCCM常用报表

2019年仅剩4天了,回头一看,今年都还没有写过博客.趁着2019的尾巴,分享一下今年做的SCCM项目经验.主要是关于如何通过SQL语句来查询SCCM相关报表信息.言归正传,默认安装报表服务后,可通过中心管理站点在sccm管理控制台查看报表数据,但是个人觉得自带的报表不好用,导出来的数据格式带各种链接,没有直接通过SQL查询报表来的方便.以下是通过SQL语句查询的常用10种SCCM统计报表: 1.系统发现数据System_Disc报表--查看SCCM系统发现的数据 2.计算机IP地址2.1 Sy

mysql按年度、季度、月度、周、日统计查询的sql语句

本文介绍一些mysql中用于查询的sql语句,包括按年度.季度.月度.周.日统计查询等,有需要的朋友,可以参考下. 一.年度查询 查询 本年度的数据 SELECT * FROM blog_article WHERE year( FROM_UNIXTIME( BlogCreateTime ) ) = year( curdate( )) 二.查询季度数据 查询数据附带季度数 SELECT ArticleId, quarter( FROM_UNIXTIME( `BlogCreateTime` ) )