• ORACLE/SQL用函数进行每年,每月,每周,每日的数据汇总


    15/03/21  用函数进行每年,每月,每周,每日的数据汇总

    假设一个销售明细表 sale_detail 含有 国家(country),销售时间(sale_time),销售额(sale_money..等等

    需要用到求和函数 SUM()和分组子句 GROUP BY   按国家和年份分组进行求和汇总(对每一个国家的每一年进行求和) 

    有两种语句形式:

    每年汇总

    1、表格形式例如:

    国家

    年份

    销售额

    巴西

    2014

    500000000000

    方式一:

    SELECT  S.country  as 国家---as 可以省略

             to_char(S.sale_time,’YYYY’)  as 年份---to_char()字符格式化函数,将时间格式转换为四位年份,‘YYYY’字符格式显示

             SumS.sale_money) as 销售额---对满足国家年份条件的金额进行汇总

    FROM   sale_detail  S ---数据源为 sale_detail  

    WHERE  sale_time>=to_date(‘2014-01-01’,’YYYY-MM-DD’) ---to_date()时间格式化函数,讲字符转换为时间格式。用时间范围的形式确定时间范围为哪年。

      AND   sale_time<=to_date(‘2015-01-01,’YYYY-MM-DD’)

    GROUP BY   S.country,sale_time--- WHERE查询出的数据按国家,时间汇总

    HAVING SumS.sale_money>10000000--   对分组查询出来的结果进行处理,只选出大于10000000-的数据。

    方式二:

    SELECT  S.country  as 国家---as 可以省略

             to_char(S.sale_time,’YYYY’)  as 年份---to_char()字符格式化函数,将时间格式转换为四位年份,‘YYYY’字符格式显示

             SumS.sale_money) as 销售额---对满足国家年份条件的金额进行汇总

    FROM   sale_detail  S ---数据源为 sale_detail  

    WHERE  to_char(sale_time,’YYYY’)=’2014’--to_char()字符转换格式化函数,将时间格式转换为字符。查找出含有2014年的数据。

    GROUP BY   S.country,sale_time--- WHERE查询出的数据按国家,时间汇总

    HAVING SumS.sale_money>10000000--   对分组查询出来的结果进行处理,只选出大于10000000-的数据。

    每月汇总

    1、表格形式如下

    国家

    月份

    销售额

    巴西

    2014/05

    6000000

    SELECT  S.country  as 国家---as 可以省略

             to_char(S.sale_time,’YYYY/MM’)  as 年份---to_char()字符格式化函数,将时间格式转换为四位年份,两位月份,‘YYYY/MM’字符格式显示

             SumS.sale_money) as 销售额---对满足国家年份条件的金额进行汇总

    FROM   sale_detail  S ---数据源为 sale_detail  

    WHERE  to_char(sale_time,’YYYY’)=’2014’--to_char()字符转换格式化函数,将时间格式转换为字符。查找出含有2014年的数据。

    GROUP BY   S.country,sale_time--- WHERE查询出的数据按国家,时间汇总

    ORDER BY   S.sale_time

    2、表格形式如下:

    国家

    年份

    月份

    销售额

    巴西

    2014

    1

    600000

    巴西

    2015

    2

    600000

    SELECT  S.country  as 国家---as 可以省略

             to_char(S.sale_time,’YYYY’)  as 年份

             to_char(S.sale_time,’MM’)  as 月份---to_char()字符格式化函数,将时间格式转换为四位年份,两位月份,‘MM’字符格式显示

             SumS.sale_money) as 销售额---对满足国家年份条件的金额进行汇总

    FROM   sale_detail  S ---数据源为 sale_detail  

    WHERE  to_char(sale_time,’YYYY’)  in ’2014’,’2015’)--to_char()字符转换格式化函数,将时间格式转换为字符。查找出含有2014,2015年的数据。

    GROUP BY   S.country,sale_time--- WHERE查询出的数据按国家,时间汇总

    ORDER BY   S.country,,S.sale_time

    专注软件测试 http://www.webdriver.org
  • 相关阅读:
    网络编程_UDP协议_发送端与接收端
    网络编程_IP对象_InetAddress
    Java对XML文件解析方式之一_SAX
    GUI练习3
    GUI_菜单练习
    GUI_文件管理器(练习)
    HTTP数据组织方式
    web前端面试题
    19-字符串匹配(kmp || substr,find)
    17-逆序数(树状数组+离散)
  • 原文地址:https://www.cnblogs.com/zhengshuheng/p/4749109.html
Copyright © 2020-2023  润新知