Improve company productivity with a Business Account.Sign Up

x
?
Solved

Calc Average Value for Values in Row of Matrix

Posted on 2007-11-21
8
Medium Priority
?
994 Views
Last Modified: 2012-05-05
I've have a returns matrix set up and I'd like to calculate the average values across a row.  Are there any built-in functions to do something like this?  I'll need to account for nulls etc.  Max there would be 12 columns of data.

Ex:
2,5,4, null are all the values in a row so the avg would be 3.66

Thanks!
0
Comment
Question by:gigglick
  • 4
  • 2
  • 2
8 Comments
 
LVL 70

Accepted Solution

by:
Scott Pletcher earned 2000 total points
ID: 20329017
No, nothing built in, you will have to code it yourself:

SELECT ...,
    (ISNULL(col1, 0) + ISNULL(col2, 0) + ... + ISNULL(col12, 0) /
    NULLIF(
    (CASE WHEN col1 IS NULL THEN 0 ELSE 1 END +
     CASE WHEN col2 IS NULL THEN 0 ELSE 1 END +
     ... +
     CASE WHEN col12 IS NULL THEN 0 ELSE 1 END), 0) AS AvgAcrossCols,
    ...
0
 
LVL 6

Expert Comment

by:messen1975
ID: 20329050
" Max there would be 12 columns of data."

Is there a variable number of columns displayed?
0
 
LVL 5

Author Comment

by:gigglick
ID: 20329098
Hi - didn't think there was anything built - DARN!  The storage table for the matrix will always have twelve columns, however, not all accounts on our end will have enough data to fill all twelve columns of the matrix.  Also, I am giving the user the option to choose the number of periods/columns they want.  So the problem is substituting 0 in for null will result in the wrong average.
0
What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

 
LVL 70

Expert Comment

by:Scott Pletcher
ID: 20329119
Not with the code I posted it won't :-).  When I divide to get the average, I *don't count* those that are NULL, only those that aren't NULL.
0
 
LVL 6

Expert Comment

by:messen1975
ID: 20329130
Scotts answer should work if there are a fixed number of columns.
0
 
LVL 5

Author Comment

by:gigglick
ID: 20329185
Hi Scott -
I should have mentioned that I wasn't directing that at your reponse...but code I was toying with on my end.  I'm trying yours out now...

Giggs
0
 
LVL 5

Author Comment

by:gigglick
ID: 20330024
Hi Scott -

Worked perfectly and quick!! Thanks so much for your help.

Giggs
0
 
LVL 5

Author Closing Comment

by:gigglick
ID: 31410402
How does he always get it right?
0

Featured Post

What Kind of Coding Program is Right for You?

There are many ways to learn to code these days. From coding bootcamps like Flatiron School to online courses to totally free beginner resources. The best way to learn to code depends on many factors, but the most important one is you. See what course is best for you.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

In this article, we will show how to detach and attach a database and then show how to repair a corrupt database and attach it, If it has some errors. We will show how to detach and attach using SSMS or using T-SQL sentences.
In this article, we will see two different methods to recover deleted data. The first option will be using the transaction log to identify the operation and restore it in a specified section of the transaction log. The second option is simpler and c…
Via a live example, show how to extract information from SQL Server on Database, Connection and Server properties
Viewers will learn how to use the UPDATE and DELETE statements to change or remove existing data from their tables. Make a table: Update a specific column given a specific row using the UPDATE statement: Remove a set of values using the DELETE s…

585 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