SQL Clone
SQLServerCentral is supported by Redgate
 
Log in  ::  Register  ::  Not logged in
 
 
 


How to obtain Sum of count


How to obtain Sum of count

Author
Message
MVIT
MVIT
SSC-Enthusiastic
SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)

Group: General Forum Members
Points: 148 Visits: 85
The View obtains the first three columns , i need to add one more column(totalCount) to the view that obtains the totalCount

CId CCId CCount totalCount
1 a 3 6
1 a 3 6
1 b 3 6
1 c 3 6
2 b 2 6
2 b 2 6
2 a 2 6
2 a 2 6
3 v 1 6

How to get the totalCount as 6 ?
(Business rule for Cid=1 Ccount=3
Cid=2 Ccount=2
Cid=3 Ccount=1

So the totalCount =3+2+1 =6)
Steve Jones
Steve Jones
SSC Guru
SSC Guru (149K reputation)SSC Guru (149K reputation)SSC Guru (149K reputation)SSC Guru (149K reputation)SSC Guru (149K reputation)SSC Guru (149K reputation)SSC Guru (149K reputation)SSC Guru (149K reputation)

Group: Administrators
Points: 149928 Visits: 19448
How are you getting the counts? are you basing this on the CCID column for a CID?

It's better if you can give DDL like this:

CREATE TABLE mytable
( CId int
, CCId varchar(10)
, CCount int
, totalCount int
)
;
GO
INSERT MyTable
VALUES (1, 'a',3, 6)
, (1, 'a', 3, 6)
, (1, 'b', 3, 6)
, (1, 'c', 3, 6)
, (2, 'b', 2, 6)
, (2, 'b', 2, 6)
, (2, 'a', 2, 6)
, (2, 'a', 2, 6)
, (3, 'v', 1, 6)
;
go



Also, please explain the logic, don't just give some results and expect someone to interpret them to match your business rule. It saves time.

Follow me on Twitter: @way0utwest
Forum Etiquette: How to post data/code on a forum to get the best help
My Blog: www.voiceofthedba.com
Steve Jones
Steve Jones
SSC Guru
SSC Guru (149K reputation)SSC Guru (149K reputation)SSC Guru (149K reputation)SSC Guru (149K reputation)SSC Guru (149K reputation)SSC Guru (149K reputation)SSC Guru (149K reputation)SSC Guru (149K reputation)

Group: Administrators
Points: 149928 Visits: 19448
This kind of works, but I'm wondering if you've calculated something in this view already.

SELECT cid, COUNT(DISTINCT ccid)
FROM dbo.MyTable
GROUP BY cid



Follow me on Twitter: @way0utwest
Forum Etiquette: How to post data/code on a forum to get the best help
My Blog: www.voiceofthedba.com
ChrisM@Work
ChrisM@Work
SSC-Forever
SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)

Group: General Forum Members
Points: 42639 Visits: 20015
;WITH SampleData AS (
SELECT CId = 1, CCId = 'a', CCount = 3, totalCount = 6 UNION ALL
SELECT 1, 'a', 3, 6 UNION ALL
SELECT 1, 'b', 3, 6 UNION ALL
SELECT 1, 'c', 3, 6 UNION ALL
SELECT 2, 'b', 2, 6 UNION ALL
SELECT 2, 'b', 2, 6 UNION ALL
SELECT 2, 'a', 2, 6 UNION ALL
SELECT 2, 'a', 2, 6 UNION ALL
SELECT 3, 'v', 1, 6
)

SELECT
CId,
CCId,
CCount,
totalCount = SUM([First]) OVER (PARTITION BY (SELECT NULL))
FROM (
SELECT *,
[First] = CASE WHEN 1 = ROW_NUMBER() OVER(PARTITION BY CId ORDER BY CCId) THEN CCount END
FROM SampleData
) d



“Write the query the simplest way. If through testing it becomes clear that the performance is inadequate, consider alternative query forms.” - Gail Shaw

For fast, accurate and documented assistance in answering your questions, please read this article.
Understanding and using APPLY, (I) and (II) Paul White
Hidden RBAR: Triangular Joins / The "Numbers" or "Tally" Table: What it is and how it replaces a loop Jeff Moden
Exploring Recursive CTEs by Example Dwain Camps
MVIT
MVIT
SSC-Enthusiastic
SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)

Group: General Forum Members
Points: 148 Visits: 85
As per my requirement , it would be something :

SELECT
CId,
CCId,
CCount,
(select totalCount = SUM([First]) OVER (PARTITION BY (SELECT NULL))
FROM (
SELECT *,
[First] = CASE WHEN 1 = ROW_NUMBER() OVER(PARTITION BY CId ORDER BY CCId) THEN CCount END
FROM SampleData
) d)

from SampleData

but it's giving error.
Sean Lange
Sean Lange
SSC Guru
SSC Guru (64K reputation)SSC Guru (64K reputation)SSC Guru (64K reputation)SSC Guru (64K reputation)SSC Guru (64K reputation)SSC Guru (64K reputation)SSC Guru (64K reputation)SSC Guru (64K reputation)

Group: General Forum Members
Points: 64450 Visits: 17976
Well the query that Chris posted returns the exact output you specified. If you need something different you have to explain it. We can't see your screen, we are not familiar with your project and we don't know the business rules.

_______________________________________________________________

Need help? Help us help you.

Read the article at http://www.sqlservercentral.com/articles/Best+Practices/61537/ for best practices on asking questions.

Need to split a string? Try Jeff Modens splitter.

Cross Tabs and Pivots, Part 1 – Converting Rows to Columns
Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs
Understanding and Using APPLY (Part 1)
Understanding and Using APPLY (Part 2)
dwain.c
dwain.c
SSCoach
SSCoach (18K reputation)SSCoach (18K reputation)SSCoach (18K reputation)SSCoach (18K reputation)SSCoach (18K reputation)SSCoach (18K reputation)SSCoach (18K reputation)SSCoach (18K reputation)

Group: General Forum Members
Points: 18329 Visits: 6431
ChrisM@Work (1/16/2013)
;WITH SampleData AS (
SELECT CId = 1, CCId = 'a', CCount = 3, totalCount = 6 UNION ALL
SELECT 1, 'a', 3, 6 UNION ALL
SELECT 1, 'b', 3, 6 UNION ALL
SELECT 1, 'c', 3, 6 UNION ALL
SELECT 2, 'b', 2, 6 UNION ALL
SELECT 2, 'b', 2, 6 UNION ALL
SELECT 2, 'a', 2, 6 UNION ALL
SELECT 2, 'a', 2, 6 UNION ALL
SELECT 3, 'v', 1, 6
)

SELECT
CId,
CCId,
CCount,
totalCount = SUM([First]) OVER (PARTITION BY (SELECT NULL))
FROM (
SELECT *,
[First] = CASE WHEN 1 = ROW_NUMBER() OVER(PARTITION BY CId ORDER BY CCId) THEN CCount END
FROM SampleData
) d



+1

Chris - You are a true code-talker! Are you sure you're not part Navaho?


My mantra: No loops! No CURSORs! No RBAR! Hoo-uh!

My thought question: Have you ever been told that your query runs too fast?

My advice:
INDEXing a poor-performing query is like putting sugar on cat food. Yeah, it probably tastes better but are you sure you want to eat it?
The path of least resistance can be a slippery slope. Take care that fixing your fixes of fixes doesn't snowball and end up costing you more than fixing the root cause would have in the first place.


Need to UNPIVOT? Why not CROSS APPLY VALUES instead?
Since random numbers are too important to be left to chance, let's generate some!
Learn to understand recursive CTEs by example.
Splitting strings based on patterns can be fast!
My temporal SQL musings: Calendar Tables, an Easter SQL, Time Slots and Self-maintaining, Contiguous Effective Dates in Temporal Tables
MVIT
MVIT
SSC-Enthusiastic
SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)SSC-Enthusiastic (148 reputation)

Group: General Forum Members
Points: 148 Visits: 85
The ccount is not obtain directly from table as done here.Am rather using the View written as below

With compTable(cid,ccid,ccount)
as
AS
(
select parentid,childrenId,COUNT(cmpcd) FROM
group by parentid,childrenId,cmpcd
)

select decsr,
pnumber,
(SELECT count(ccount) FROM compTable where parentid=ch.cn_id) as [Count] ,--[this is ccount]
-- here i need the total count
from table ch inner join table b
on ch.id=b.id
ChrisM@Work
ChrisM@Work
SSC-Forever
SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)

Group: General Forum Members
Points: 42639 Visits: 20015
sabeer.mvit (1/16/2013)
The ccount is not obtain directly from table as done here.Am rather using the View written as below

With compTable(cid,ccid,ccount)
as
AS
(
select parentid,childrenId,COUNT(cmpcd) FROM
group by parentid,childrenId,cmpcd
)

select decsr,
pnumber,
(SELECT count(ccount) FROM compTable where parentid=ch.cn_id) as [Count] ,--[this is ccount]
-- here i need the total count
from table ch inner join table b
on ch.id=b.id



Can you post the whole query referencing the view, and also the view definition, please? Some sample data would help too - exactly what will probably depend upon the view definition.

“Write the query the simplest way. If through testing it becomes clear that the performance is inadequate, consider alternative query forms.” - Gail Shaw

For fast, accurate and documented assistance in answering your questions, please read this article.
Understanding and using APPLY, (I) and (II) Paul White
Hidden RBAR: Triangular Joins / The "Numbers" or "Tally" Table: What it is and how it replaces a loop Jeff Moden
Exploring Recursive CTEs by Example Dwain Camps
ChrisM@Work
ChrisM@Work
SSC-Forever
SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)SSC-Forever (42K reputation)

Group: General Forum Members
Points: 42639 Visits: 20015
dwain.c (1/16/2013)
... Are you sure you're not part Navaho?


No but one of my programming buddies went AWOL for six months last year - and resurfaced in Michigan married to an Apache!

“Write the query the simplest way. If through testing it becomes clear that the performance is inadequate, consider alternative query forms.” - Gail Shaw

For fast, accurate and documented assistance in answering your questions, please read this article.
Understanding and using APPLY, (I) and (II) Paul White
Hidden RBAR: Triangular Joins / The "Numbers" or "Tally" Table: What it is and how it replaces a loop Jeff Moden
Exploring Recursive CTEs by Example Dwain Camps
Go


Permissions

You can't post new topics.
You can't post topic replies.
You can't post new polls.
You can't post replies to polls.
You can't edit your own topics.
You can't delete your own topics.
You can't edit other topics.
You can't delete other topics.
You can't edit your own posts.
You can't edit other posts.
You can't delete your own posts.
You can't delete other posts.
You can't post events.
You can't edit your own events.
You can't edit other events.
You can't delete your own events.
You can't delete other events.
You can't send private messages.
You can't send emails.
You can read topics.
You can't vote in polls.
You can't upload attachments.
You can download attachments.
You can't post HTML code.
You can't edit HTML code.
You can't post IFCode.
You can't post JavaScript.
You can post emoticons.
You can't post or upload images.

Select a forum

































































































































































SQLServerCentral


Search