Difference between revisions of "Documentation/How Tos/Calc: DSUM function"
From Apache OpenOffice Wiki
< Documentation | How Tos
OOoWikiBot (Talk | contribs) m (Robot: Automated text replacement %s) |
DavidGreaves (Talk | contribs) (Added link to similar approach using array expression) |
||
Line 84: | Line 84: | ||
: also returns the same result. | : also returns the same result. | ||
+ | |||
+ | === Similar === | ||
+ | |||
+ | [[Documentation/How_Tos/Using Arrays#Sum_of_entries_matching_multiple_conditions|Using Arrays]] shows a similar technique: | ||
+ | |||
+ | {| border="1" | ||
+ | |-align="center" | ||
+ | | ||'''A'''||'''B'''||'''C''' | ||
+ | |||
+ | |-align="center" | ||
+ | |'''1'''||Job Ref||Employee||Cost | ||
+ | |||
+ | |-align="center" | ||
+ | |'''2'''||1||Andy||£30 | ||
+ | |||
+ | |-align="center" | ||
+ | |'''3'''||2||Betty||£40 | ||
+ | |||
+ | |-align="center" | ||
+ | |'''4'''||3||Charles||£30 | ||
+ | |||
+ | |-align="center" | ||
+ | |'''5'''||3||Daniel||£50 | ||
+ | |||
+ | |-align="center" | ||
+ | |'''6'''||4||Eva||£20 | ||
+ | |} | ||
+ | |||
+ | To find the total cost where Job Ref = 3 (ie £80) | ||
+ | |||
+ | <tt>'''SUM( (A2:A6 = 3) * C2:C6 )'''</tt> | ||
+ | |||
+ | : will SUM() values in C2:C6 where the corresponding value in A2:A6 is = 3. Note that this uses the special '''array expression''' mechanism and must be entered by pressing Ctrl-Shift-Enter. | ||
Revision as of 15:16, 27 February 2009
DSUM
Sums the cells in a column of a Calc 'database' table, in rows which meet specified criteria.
Syntax:
DSUM(database_table; field; criteria_table)
where
- database_table is a range defining the data to be processed.
- field is the column to sum. It may be a column number (1 is the first column of the database table, 2 is the second ...) or a column header (enclosed in quotation marks ””) or a cell referring to a column header.
- criteria_table is a range containing criteria, which are used to select which rows of the database_table to sum.
The Database functions overview fully describes the use of these parameters.
Example:
In this spreadsheet:
A | B | C | D | E | |
1 | Name | Grade | Age | Distance to School | Weight |
2 | Andy | 3 | 9 | 150 | 40 |
3 | Betty | 4 | 10 | 1000 | 42 |
4 | Charles | 3 | 10 | 300 | 51 |
5 | Daniel | 5 | 11 | 1200 | 48 |
6 | Eva | 2 | 8 | 650 | 33 |
7 | Frank | 2 | 7 | 300 | 42 |
8 | Greta | 1 | 7 | 200 | 36 |
9 | Harry | 3 | 9 | 1200 | 44 |
10 | Irene | 2 | 8 | 1000 | 42 |
11 | |||||
12 | |||||
13 | Name | Grade | Age | Distance to School | Weight |
14 | 2 |
DSUM(A1:E10; "Distance to School"; A13:E14)
- returns the combined distance to school of all children who are in the second grade (1950).
DSUM(A1:E10; 4; A13:E14)
- returns the same result.
DSUM(A1:E10; D1; A13:E14)
- also returns the same result.
Similar
Using Arrays shows a similar technique:
A | B | C | |
1 | Job Ref | Employee | Cost |
2 | 1 | Andy | £30 |
3 | 2 | Betty | £40 |
4 | 3 | Charles | £30 |
5 | 3 | Daniel | £50 |
6 | 4 | Eva | £20 |
To find the total cost where Job Ref = 3 (ie £80)
SUM( (A2:A6 = 3) * C2:C6 )
- will SUM() values in C2:C6 where the corresponding value in A2:A6 is = 3. Note that this uses the special array expression mechanism and must be entered by pressing Ctrl-Shift-Enter.
Template:Documentation/SeeAlso
Issues
The OOo2.3 Help implies that 0 as a field will include the entire database table. This seems to be wrong - only a single column can be summed.