• SQL 按 年 季 月 统计


    按年
    SELECT year(CreationTime) 年次, count(1) 数据条数, sum(Num) 字段合计 FROM Orders GROUP BY year(CreationTime)
    --按季统计 
    SELECT datepart(quarter, CreationTime) 季次, count(1) 数据条数, sum(Num) 合计
    FROM Orders 
    WHERE year(CreationTime)=year(getdate()) 
    GROUP BY datepart(quarter, CreationTime) 
    --按月统计 
    SELECT convert(char(7), CreationTime, 120) 月份,count(1) 数据条数, 数据合计=sum(Num) 
    FROM Orders
    GROUP BY convert(char(7), CreationTime, 120) 
    --按日统计 
    SELECT Convert(varchar(10),CreationTime,23) 日期, count(1) 销售次数, sum(Num) 销售量
    FROM Orders
    GROUP BY Convert(varchar(10), CreationTime, 23) 
    
    --按日统计 out
    日期            销售次数    销售量
    2021-04-21    1    98
    2021-04-24    1    82
    2021-04-28    1    91
    2021-05-01    1    98
    2021-05-02    1    84
    2021-05-05    1    76
    2021-05-08    2    115
    2021-05-10    1    32
    2021-05-11    1    48
    2021-05-12    1    39
    
    
    --按周统计 (年度周次)
    SELECT datepart(week, CreationTime) 周次, count(1) 销售次数, sum(Num) 销售量
    FROM Orders 
    WHERE year(CreationTime)=year(getdate()) 
    GROUP BY datepart(week, CreationTime) 
    
    --按周统计 (年度周次) out
    周次    销售次数    销售量
    17    2    180
    18    2    189
    19    4    275
    20    3    119
    
    --按周统计 (月份周次)
    SELECT weekName 周次,count(1) 销售次数, sum(Num) 销售量 from (
    SELECT cast(datepart(month,CreationTime) as varchar(2)) + '月第'+ cast((datepart(week,CreationTime) - datepart(week,convert(varchar(7),CreationTime,120) + '-01') + 1) as varchar(2)) + ''  weekName,Num
    FROM Orders 
    WHERE year(CreationTime)=year(getdate()) 
    )tb
    GROUP BY weekName 
    
    
    --可以创建函数来获取周次
    CREATE FUNCTION fn_getweek
    (
        @date datetime
    )
    RETURNS nvarchar(50)
    AS
    BEGIN
        DECLARE @result nvarchar(50)
        select @result=cast(datepart(mm,@date) as varchar(2)) + '月第' + cast((datepart(wk,@date) - datepart(wk,convert(varchar(7),@date,120) + '-01') + 1) as varchar(2)) + '';
        -- Return the result of the function
        RETURN @result
    END
    GO
    SELECT weekName 周次,count(1) 销售次数, sum(Num) 销售量 from (
    SELECT dbo.fn_getweek(CreationTime) weekName,Num
    FROM Orders 
    WHERE year(CreationTime)=year(getdate()) 
    )tb
    GROUP BY weekName 
    关注博客 https://www.cnblogs.com/aknife/
  • 相关阅读:
    20200910-3 命令行和控制台编程
    C语言1作业04
    C语言1博客作业03
    c语言1博客作业02
    2018寒假作业--3抓老鼠啊~亏了还是赚了?
    2018寒假作业2--币值转换
    2018寒假作业-1 打印沙漏
    记叙在人生路上对我影响最大的三位老师
    自我介绍
    抓老鼠啊~亏了还是赚了?编程总结
  • 原文地址:https://www.cnblogs.com/aknife/p/14918462.html
Copyright © 2020-2023  润新知