[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

use count within a join query?

Posted on 2006-07-24
6
Medium Priority
?
228 Views
Last Modified: 2008-02-01
I would like to write two related queries.  

The first tells me, for each row in SALES_REPS, how many customers each rep is responsible for (how many rows in CUSTOMERS have SALES_REPS.repid = CUSTOMERS.repid).  If I call these values 'customer counts', then I also want a second query that tallies the customer counts (5 employees have 25 customers, 8 employees have 32 customers, 18 employees have 28 customers, etc.).

I can calculate the values in code walking through the result set, but I would prefer to bring the results directly out of a SQL statement.

Thanks for any help.
0
Comment
Question by:ottenm
[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
  • Learn & ask questions
  • 2
  • 2
  • 2
6 Comments
 
LVL 25

Expert Comment

by:Mr_Peerapol
ID: 17169877

SELECT s.*, (SELECT COUNT(*) FROM CUSTOMERS WHERE SALES_REPS.repid = CUSTOMERS.repid) AS [customer counts] FROM SALES_REPS

SELECT (SELECT COUNT(*) FROM SALES_REPS), (SELECT COUNT(*) FROM CUSTOMERS)
0
 
LVL 25

Assisted Solution

by:Mr_Peerapol
Mr_Peerapol earned 1000 total points
ID: 17169881
Sorry, the first one should be:

SELECT *, (SELECT COUNT(*) FROM CUSTOMERS WHERE SALES_REPS.repid = CUSTOMERS.repid) AS [customer counts] FROM SALES_REPS
0
 
LVL 19

Expert Comment

by:folderol
ID: 17170136
Try:

select
case grouping(SALES_REPS.repid) when 0 then SALES_REPS.repid else 'Total Count of Reps' end,
replist.Cust_count,
count(SALES_REPS.repid) as 'Rep_count'
from
SALES_REPS join
(
select
CUSTOMERS.repid, Count(CUSTOMERS.repid) as 'Cust_count'
from CUSTOMERS
group by CUSTOMERS.repid
) as replist on SALES_REPS.repid = replist.repid

group by SALES_REPS.repid, replist.Cust_count with rollup
order by replist.Cust_count desc

Since each rep can have only one value for customer count, the double group by has no effect other than triggering the rollup on both columns.  

Rollup sometimes returns more rows than you want or need but there are techniques for removing them from the results.

Tom
0
Veeam Task Manager for Hyper-V

Task Manager for Hyper-V provides critical information that allows you to monitor Hyper-V performance by displaying real-time views of CPU and memory at the individual VM-level, so you can quickly identify which VMs are using host resources.

 

Author Comment

by:ottenm
ID: 17170283
This one is perfect for counting the number of customers each rep has:

SELECT *, (SELECT COUNT(*) FROM CUSTOMERS WHERE SALES_REPS.repid = CUSTOMERS.repid) AS [customer counts] FROM SALES_REPS

To find out how many reps have 10 customers, and how many have 11, etc., I get the following error when running the solution by folderol:

Syntax error converting the varchar value 'Total Count of Reps' to a column of data type int.
0
 
LVL 19

Accepted Solution

by:
folderol earned 1000 total points
ID: 17170439
Just remove that line
case grouping(SALES_REPS.repid) when 0 then SALES_REPS.repid else 'Total Count of Reps' end,
and put

SALES_REPS.repid,

in its place.  OR, change it to

case grouping(SALES_REPS.repid) when 0 then SALES_REPS.LAST_NAME else 'Total Count of Reps' end,

or other varchar field in SALES_REPS table.



Below is a simplified query to just return the 2nd part of your post.
--------
select
replist.Cust_count,
count(SALES_REPS.repid) as 'Rep_count'
from
(
select
CUSTOMERS.repid, Count(CUSTOMERS.repid) as 'Cust_count'
from CUSTOMERS
group by CUSTOMERS.repid
) as replist
group by replist.Cust_count with rollup
order by replist.Cust_count desc


Tom.
0
 

Author Comment

by:ottenm
ID: 17170618
That's them!  Awesome!! Thank you very much!
0

Featured Post

Moving data to the cloud? Find out if you’re ready

Before moving to the cloud, it is important to carefully define your db needs, plan for the migration & understand prod. environment. This wp explains how to define what you need from a cloud provider, plan for the migration & what putting a cloud solution into practice entails.

Question has a verified solution.

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

In this article we will learn how to fix  “Cannot install SQL Server 2014 Service Pack 2: Unable to install windows installer msi file” error ?
When trying to connect from SSMS v17.x to a SQL Server Integration Services 2016 instance or previous version, you get the error “Connecting to the Integration Services service on the computer failed with the following error: 'The specified service …
Via a live example combined with referencing Books Online, show some of the information that can be extracted from the Catalog Views in SQL Server.
Via a live example, show how to extract insert data into a SQL Server database table using the Import/Export option and Bulk Insert.

656 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question