Query That Counts Records With A Where Clause
SELECT EmailOfConsumer, COUNT(EmailOfConsumer) as 'NumberOfOrders', SUM(CAST(Total as money)) as 'TotalValue',
Solution 1:
use
HAVINGCOUNT(EmailOfConsumer) =1The having clause restricts a aggregate whereas the where clause only put restrictions on individual column data
Solution 2:
Using group by and then having clause. Refer this
SELECT
EmailOfConsumer,
COUNT(EmailOfConsumer) as'NumberOfOrders',
SUM(CAST(Total as money)) as'TotalValue',
(SUM(CAST(Total as money))/COUNT(EmailOfConsumer)) as'AverageValue'FROM webshop
GROUPBY EmailOfConsumer
HAVINGCOUNT(EmailOfConsumer) ='1'ORDERBY TotalValue DESCSolution 3:
SELECT
EmailOfConsumer,
COUNT(EmailOfConsumer) as'NumberOfOrders',
SUM(CAST(Total as money)) as'TotalValue',
(SUM(CAST(Total as money))/COUNT(EmailOfConsumer)) as'AverageValue'FROM webshop
GROUPBY EmailOfConsumer
HAVINGCOUNT(EmailOfConsumer) ='1'ORDERBY TotalValue DESCSolution 4:
You can try
SELECT
EmailOfConsumer,
COUNT(EmailOfConsumer) as'NumberOfOrders',
SUM(CAST(Total as money)) as'TotalValue',
(SUM(CAST(Total as money))/COUNT(EmailOfConsumer)) as'AverageValue'FROM webshop
GROUPBY EmailOfConsumer
HAVINGCOUNT(EmailOfConsumer) =1ORDERBY TotalValue DESCSolution 5:
Use this query:
SELECT
EmailOfConsumer,
COUNT(EmailOfConsumer) as'NumberOfOrders',
SUM(CAST(Total as money)) as'TotalValue',
(SUM(CAST(Total as money))/COUNT(EmailOfConsumer)) as'AverageValue'FROM webshop
GROUPBY EmailOfConsumer
HAVINGCOUNT(*) =1ORDERBY TotalValue DESCNotes:
WHEREclause precedesGROUP BY, whileHAVINGclause followsGROUP BYWHEREclause filters rows before aggregation;HAVINGclause filters aggregated rowsCOUNT(...)returns a number, so the constant1should not be enclosed in quotes.
Post a Comment for "Query That Counts Records With A Where Clause"