Solved

Calc Average Value for Values in Row of Matrix

Posted on 2007-11-21
8
982 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 69

Accepted Solution

by:
Scott Pletcher earned 500 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 is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

 
LVL 69

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

Use Case: Protecting a Hybrid Cloud Infrastructure

Microsoft Azure is rapidly becoming the norm in dynamic IT environments. This document describes the challenges that organizations face when protecting data in a hybrid cloud IT environment and presents a use case to demonstrate how Acronis Backup protects all data.

Question has a verified solution.

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

Introduction SQL Server Integration Services can read XML files, that’s known by every BI developer.  (If you didn’t, don’t worry, I’m aiming this article at newcomers as well.) But how far can you go?  When does the XML Source component become …
In this article we will get to know that how can we recover deleted data if it happens accidently. We really can recover deleted rows if we know the time when data is deleted by using the transaction log.
Familiarize people with the process of retrieving data from SQL Server using an Access pass-thru query. Microsoft Access is a very powerful client/server development tool. One of the ways that you can retrieve data from a SQL Server is by using a pa…
Viewers will learn how to use the INSERT statement to insert data into their tables. It will also introduce the NULL statement, to show them what happens when no value is giving for any given column.

809 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