Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Calc Average Value for Values in Row of Matrix

Posted on 2007-11-21
8
Medium Priority
?
989 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
[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
  • 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
Visualize your virtual and backup environments

Create well-organized and polished visualizations of your virtual and backup environments when planning VMware vSphere, Microsoft Hyper-V or Veeam deployments. It helps you to gain better visibility and valuable business insights.

 
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 does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

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

Windocks is an independent port of Docker's open source to Windows.   This article introduces the use of SQL Server in containers, with integrated support of SQL Server database cloning.
One of the most important things in an application is the query performance. This article intends to give you good tips to improve the performance of your queries.
Via a live example, show how to shrink a transaction log file down to a reasonable size.
Viewers will learn how to use the SELECT statement in SQL to return specific rows and columns, with various degrees of sorting and limits in place.

598 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