How to query GROUP BY Month in a Year

后端 未结 5 814
情书的邮戳
情书的邮戳 2021-02-01 01:07

I am using Oracle SQL Developer. I essentially have a table of pictures that holds the columns:

[DATE_CREATED(date), NUM_of_PICTURES(int)]

and if I do a select *

相关标签:
5条回答
  • 2021-02-01 01:25

    I am doing like this in MSSQL

    Getting Monthly Data:

     SELECT YEAR(DATE_CREATED) [Year], MONTH(DATE_CREATED) [Month], 
         DATENAME(MONTH,DATE_CREATED) [Month Name], SUM(Num_of_Pictures) [Pictures Count]
        FROM pictures_table
        GROUP BY YEAR(DATE_CREATED), MONTH(DATE_CREATED), 
         DATENAME(MONTH, DATE_CREATED)
        ORDER BY 1,2
    

    Getting Monthly Data using PIVOT:

    SELECT *
    FROM (SELECT YEAR(DATE_CREATED) [Year], 
           DATENAME(MONTH, DATE_CREATED) [Month], 
           SUM(Num_of_Pictures) [Pictures Count]
          FROM pictures_table
          GROUP BY YEAR(DATE_CREATED), 
          DATENAME(MONTH, DATE_CREATED)) AS MontlySalesData
    PIVOT( SUM([Pictures Count])   
        FOR Month IN ([January],[February],[March],[April],[May],
        [June],[July],[August],[September],[October],[November],
        [December])) AS MNamePivot
    
    0 讨论(0)
  • 2021-02-01 01:31

    You can use:

        select FK_Items,Sum(PoiQuantity) Quantity  from PurchaseOrderItems POI
        left join PurchaseOrder PO ON po.ID_PurchaseOrder=poi.FK_PurchaseOrder
        group by FK_Items,DATEPART(MONTH, TransDate)
    
    0 讨论(0)
  • 2021-02-01 01:33

    I would be inclined to include the year in the output. One way:

    select to_char(DATE_CREATED, 'YYYY-MM'), sum(Num_of_Pictures)
    from pictures_table
    group by to_char(DATE_CREATED, 'YYYY-MM')
    order by 1
    

    Another way (more standard SQL):

    select extract(year from date_created) as yr, extract(month from date_created) as mon,
           sum(Num_of_Pictures)
    from pictures_table
    group by extract(year from date_created), extract(month from date_created)
    order by yr, mon;
    

    Remember the order by, since you presumably want these in order, and there is no guarantee about the order that rows are returned in after a group by.

    0 讨论(0)
  • 2021-02-01 01:46

    For MS SQL you can do this.

        select  CAST(DATEPART(MONTH, DateTyme) as VARCHAR) +'/'+ 
    CAST(DATEPART(YEAR, DateTyme) as VARCHAR) as 'Date' from #temp
        group by Name, CAST(DATEPART(MONTH, DateTyme) as VARCHAR) +'/'+
     CAST(DATEPART(YEAR, DateTyme) as VARCHAR) 
    
    0 讨论(0)
  • 2021-02-01 01:49

    For Oracle:

    select EXTRACT(month from DATE_CREATED), sum(Num_of_Pictures)
    from pictures_table
    group by EXTRACT(month from DATE_CREATED);
    
    0 讨论(0)
提交回复
热议问题