Search code examples
t-sqlgroup-bysum

Get SUM() after GROUP BY


So I have a table name "sumTable"

year Orders
1996-07-04 00:00:00.000 2
1996-10-15 00:00:00.000 3
1997-10-08 00:00:00.000 1
1996-10-03 00:00:00.000 5
1994-11-05 00:00:00.000 1
1996-07-04 00:00:00.000 2
1999-10-15 00:00:00.000 3
1996-10-08 00:00:00.000 1
1995-10-03 00:00:00.000 5
1996-11-05 00:00:00.000 1

I want to know the total number of orders in "1996" and to be displayed in a single column,

Expected Output 
Total Orders
14

I tried using this

select datepart(yy, '1996'), sum(orders) AS 'Total_Orders' from SumTable group by orders

and this link too get AVG() after GROUP BY in MYSQL

Please advice a solution!


Solution

  • For your requirement you want a single row for the sum of all qualifying rows - you are not grouping anything so there is no need for group by.

    Select sum (Orders) as Total_orders
    from SumTable
    where [year] >='19960101' and [year] < '19970101';
    

    You would want groups of aggregated values if for example you wanted each year and its sum of orders.

    Select year([year]) as Order_year, sum(Orders) as Total_orders
    from SumTable
    group by year([year])
    order by Order_year;
    

    Although it's technically okay to have a column named year, it's actually not a year but an Order Date so makes for a somewhat confusing query, I would consider a more meaningful name; this also assumes column year is a datetime data type.