~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to docs/functions/aggregatefunctions.rst

  • Committer: Lee Bieber
  • Date: 2011-02-23 00:54:51 UTC
  • mfrom: (1994.4.96 drizzle)
  • mto: This revision was merged to the branch mainline in revision 2194.
  • Revision ID: kalebral@gmail.com-20110223005451-yqqywil9o7yzt4te
Merge Marisa - documentation updates

Show diffs side-by-side

added added

removed removed

Lines of Context:
9
9
 
10
10
        SELECT "function type" ("column_name")
11
11
        FROM "table_name";
12
 
 
13
 
The following are examples of aggregate functions:
14
 
 
15
 
**AVG**:  Return the average value of the argument. (Does not work with temporal values unless first converted to numeric values.)
16
 
 
17
 
:doc:`count`
 
12
 
 
13
The following are examples of aggregate functions:
 
14
 
 
15
:ref:`avg`:  Return the average value of the argument. (Does not work with temporal values unless first converted to numeric values.)
 
16
 
 
17
:ref:`count`
18
18
(DISTINCT):  Return the count of a number of different values
19
19
 
20
 
:doc:`count`:  Return a count of the number of rows returned
 
20
:ref:`count`:  Return a count of the number of rows returned
21
21
        
22
 
**GROUP_CONCAT**:  Return a concatenated string
23
 
 
24
 
**MAX**:  Return the maximum value
25
 
 
26
 
**MIN**:  Return the minimum value
27
 
 
28
 
**STD**:  Return the population standard deviation
29
 
 
30
 
**STDDEV_POP**:  Return the population standard deviation
31
 
 
32
 
**STDDEV_SAMP**:  Return the sample standard deviation
33
 
 
34
 
**STDDEV**:  Return the population standard deviation
35
 
 
36
 
**SUM**:  Return the sum. (Does not work with temporal values unless first converted to numeric values.)
37
 
 
38
 
**VAR_POP**:  Return the population standard variance
39
 
 
40
 
**VAR_SAMP**:  Return the sample variance
41
 
 
42
 
**VARIANCE**:  Return the population standard variance
43
 
 
44
 
.. toctree::
45
 
   :hidden: 
46
 
 
47
 
   count
 
22
:ref:`group_concat`:  Return a concatenated string
 
23
 
 
24
:ref:`max`:  Return the maximum or minim values
 
25
 
 
26
 
 
27
.. _avg:
 
28
 
 
29
AVG
 
30
---
 
31
 
 
32
The AVG function returns the average value for the specified column in a table. To find the average session time for users and GROUP BY last_name:
 
33
 
 
34
.. code-block:: mysql
 
35
 
 
36
        SELECT last_name, AVG(session_length)
 
37
        -> FROM session_details GROUP BY last_name;
 
38
 
 
39
AVG() returns NULL if there are no matching rows.  
 
40
 
 
41
 
 
42
.. _count:
 
43
 
 
44
COUNT
 
45
-----
 
46
 
 
47
Take the following "Nodes" table, where 'nodes' are user-contributed content:
 
48
 
 
49
+--------+-------------------+------------+----------------+-------------------+
 
50
|NodeID  |ContributionDate   |NodeSize    |NodePopularity  |UserName           |
 
51
+========+===================+============+================+===================+
 
52
|1       |12/22/2010         |160         |2               |Smith              |
 
53
+--------+-------------------+------------+----------------+-------------------+
 
54
|2       |08/10/2010         |190         |2               |Johnson            |
 
55
+--------+-------------------+------------+----------------+-------------------+
 
56
|3       |07/13/2010         |500         |5               |Baldwin            |
 
57
+--------+-------------------+------------+----------------+-------------------+
 
58
|4       |07/15/2010         |420         |2               |Smith              |
 
59
+--------+-------------------+------------+----------------+-------------------+
 
60
|5       |12/22/2010         |1000        |4               |Wood               |
 
61
+--------+-------------------+------------+----------------+-------------------+
 
62
|6       |10/2/2010          |820         |4               |Smith              |
 
63
+--------+-------------------+------------+----------------+-------------------+
 
64
 
 
65
The SQL COUNT function returns the number of rows in a table satisfying the criteria specified in the WHERE clause. If we want to count the number of nodes made by user Smith, we will use the following SQL COUNT expression:
 
66
 
 
67
.. code-block:: mysql
 
68
 
 
69
        SELECT COUNT * FROM Nodes
 
70
        WHERE UserName = "Smith";
 
71
 
 
72
In the above statement, the COUNT keyword returns the number 3, because the user Smith has 3 total nodes.
 
73
 
 
74
If you don't specify a WHERE clause when using the COUNT keyword, your statement will simply return the total number of rows in the table, which would be 6 in this example:
 
75
 
 
76
.. code-block:: mysql
 
77
 
 
78
        SELECT COUNT * FROM Nodes;
 
79
 
 
80
 
 
81
.. _group_concat:
 
82
 
 
83
GROUP CONCAT
 
84
-------------
 
85
 
 
86
GROUP_CONCAT returns a string result with the concatenated non-NULL values from a group.
 
87
 
 
88
For example, without GROUP_CONCAT, this query:
 
89
 
 
90
.. code-block:: mysql
 
91
 
 
92
        SELECT id,client_id FROM services WHERE id = 3;
 
93
 
 
94
Returns:
 
95
 
 
96
+----+-----------+
 
97
| id | client_id |
 
98
+====+===========+
 
99
|  3 |         7 |
 
100
+----+-----------+
 
101
|  3 |         8 |
 
102
+----+-----------+
 
103
|  3 |         9 |
 
104
+----+-----------+
 
105
 
 
106
But using GROUP_CONCAT in an alternate query:
 
107
 
 
108
.. code-block:: mysql
 
109
 
 
110
        SELECT id,GROUP_CONCAT(client_id) FROM services WHERE id = 3 GROUP BY id;
 
111
 
 
112
Will return:
 
113
 
 
114
+----+-------------------------+
 
115
| id | GROUP_CONCAT(client_id) |
 
116
+====+=========================+
 
117
|  3 | 7,8,9                   |
 
118
+----+-------------------------+
 
119
 
 
120
 
 
121
.. _max:
 
122
 
 
123
MAX and MIN
 
124
------------
 
125
 
 
126
MAX returns the maximum value in a group. In cases where MAX is passed a string argument, it will return the maximum string value.
 
127
 
 
128
MIN returns the minimum value of a group. Like MAX, MIN returns the minimum string value string value. 
 
129
 
 
130
MAX and MIN return NULL if there are no matching rows.
 
131
 
 
132
.. code-block:: mysql
 
133
 
 
134
        SELECT product_id, MIN(price), MAX(price)
 
135
                FROM inventory
 
136
                GROUP BY product_id;
 
137
 
 
138
** Question: For MAX(), does Drizzle compare ENUM and SET columns by their string value rather than by the string's relative position in the set? **