Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# SQL Query Help

Posted on 2008-09-30
Medium Priority
205 Views
Hello EXPERTS! What am I doing wrong on this query? I would like to be able to compute the counts column for AVG, MIN, MAX and SUM.

SELECT DATEADD(mi, -15, dtcompleted) as Timeframe, count(1) as counts

from sds (nolock)

where dtcompleted between '2006-06-26' and '2006-06-27'

group by dtcompleted

order by dtcompleted, 1

compute AVG(counts), SUM(counts), MAX(counts), MIN(counts)
0
Question by:drei22
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 4
• 4
• 2
• +1

LVL 39

Assisted Solution

BrandonGalderisi earned 200 total points
ID: 22609273
Compute is used to do stuff like a subtotal when a sum is used above in the query:

Try this:

SELECT dtCompleted,AVG(counts), SUM(counts), MAX(counts), MIN(counts)
from sds (nolock)
where dtcompleted between '2006-06-26' and '2006-06-27'
group by dtcompleted
0

LVL 11

Expert Comment

ID: 22609304
Is this what you're looking for?

WITH sds_tmp (Timeframe, counts) AS
(
FROM sds (nolock)
WHERE dtcompleted between '2006-06-26' and '2006-06-27'
GROUP BY dtcompleted
ORDER BY dtcompleted
)
SELECT AVG(counts), SUM(counts), MAX(counts), MIN(counts)
FROM sds_tmp
0

LVL 11

Expert Comment

ID: 22609311
Sorry, I forgot to remove the ORDER BY clause from my previous post.

WITH sds_tmp (Timeframe, counts) AS
(
FROM sds (nolock)
WHERE dtcompleted between '2006-06-26' and '2006-06-27'
GROUP BY dtcompleted
)
SELECT AVG(counts), SUM(counts), MAX(counts), MIN(counts)
FROM sds_tmp
0

LVL 22

Accepted Solution

dportas earned 400 total points
ID: 22609428
You can't use the column alias in the query. Also best to avoid COMPUTE, which is deprecated. Try the following.

Notice I've changed the date range because your version would have excluded any rows with times after midnight on the 27th.

SELECT DATEADD(mi, -15, dtcompleted) as Timeframe,
SUM(cnt) cnt,
MIN(cnt) min_cnt,
MAX(cnt) max_cnt,
AVG(cnt) avg_cnt
FROM
(SELECT dtcompleted, COUNT(*) as cnt
FROM sds
WHERE dtcompleted >= '20060626'
AND dtcompleted < '20060628'
GROUP BY dtcompleted
) T
GROUP BY dtcompleted
WITH ROLLUP;
0

Author Comment

ID: 22609480
I think I mistated one little detail AARONAKIN I'm using SQL 2000 not 2005. So I can't use the WITH clause.
0

LVL 11

Expert Comment

ID: 22609525
Ah, sorry I should have asked.  I saw that you posted in the 2005 zone, and I just assumed.  My bad.

In that case, I'd go with dportas's solution.
0

Author Comment

ID: 22609590
Again I apologize for that mistake AARONKIN. And DPORTAS everything looks good but when I run the query I get this.

Timeframe                               cnt   min_cnt    max_cnt   avg_cnt
2006-06-20  00:00:00.000        1          1                1              1

I was looking to see total total numbers for the counts. So total counts for each cnt column for the stated time period

Any ideas?
0

LVL 11

Assisted Solution

aaronakin earned 400 total points
ID: 22609604
Try this then...

SELECT SUM(cnt) cnt,
MIN(cnt) min_cnt,
MAX(cnt) max_cnt,
AVG(cnt) avg_cnt
FROM
(SELECT dtcompleted, COUNT(*) as cnt
FROM sds
WHERE dtcompleted >= '20060626'
AND dtcompleted < '20060628'
GROUP BY dtcompleted
) T
0

LVL 22

Expert Comment

ID: 22609631
I think you must have run my query without the WITH ROLLUP clause. You should get the totals as well if ROLLUP is included.
0

Author Comment

ID: 22609658
Score! And yes you were right DPORTAS I fat fingered the cut and paste. lol Thanks a million guys as both scripts worked perfectly.
0

Author Closing Comment

ID: 31501727
A+ service here @ EE i can't believe I didn't sign up years ago!
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Use this article to create a batch file to backup a Microsoft SQL Server database to a Windows folder.  The folder can be on the local hard drive or on a network share.  This batch file will query the SQL server to get the current date & time and wiâ€¦
In part one, we reviewed the prerequisites required for installing SQL Server vNext. In this part we will explore how to install Microsoft's SQL Server on Ubuntu 16.04.
Monitoring a network: how to monitor network services and why? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the philosophy behind service monitoring and why a handshake validation is critical in network monitoring. Software utilized â€¦
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infrasâ€¦
###### Suggested Courses
Course of the Month9 days, 3 hours left to enroll