<!-- HTML header for doxygen 1.8.4-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="keywords" content="madlib,postgres,greenplum,machine learning,data mining,deep learning,ensemble methods,data science,market basket analysis,affinity analysis,pca,lda,regression,elastic net,huber white,proportional hazards,k-means,latent dirichlet allocation,bayes,support vector machines,svm"/>
<title>MADlib: Summary</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<!-- hack in the navigation tree -->
<script type="text/javascript" src="eigen_navtree_hacks.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="madlib_extra.css" rel="stylesheet" type="text/css"/>
<!-- google analytics -->
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-45382226-1', 'madlib.apache.org');
  ga('send', 'pageview');
</script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><a href="http://madlib.apache.org"><img alt="Logo" src="madlib.png" height="50" style="padding-left:0.5em;" border="0"/ ></a></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">
   <span id="projectnumber">1.21.0</span>
   </div>
   <div id="projectbrief">User Documentation for Apache MADlib</div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__grp__summary.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">Summary<div class="ingroups"><a class="el" href="group__grp__stats.html">Statistics</a> &raquo; <a class="el" href="group__grp__desc__stats.html">Descriptive Statistics</a></div></div>  </div>
</div><!--header-->
<div class="contents">
<div class="toc"><b>Contents</b> <ul>
<li>
<a href="#usage">Summary Function Syntax</a> </li>
<li>
<a href="#examples">Examples</a> </li>
<li>
<a href="#notes">Notes</a> </li>
<li>
<a href="#related">Related Topics</a> </li>
</ul>
</div><p>The MADlib <b><a class="el" href="summary_8sql__in.html#a4be51e88a1df45191a1692b95429af36">summary()</a></b> function produces summary statistics for any data table. The function invokes various methods from the MADlib library to provide the data overview.</p>
<p><a class="anchor" id="usage"></a></p><dl class="section user"><dt>Summary Function Syntax</dt><dd>The <b><a class="el" href="summary_8sql__in.html#a4be51e88a1df45191a1692b95429af36">summary()</a></b> function has the following syntax:</dd></dl>
<pre class="syntax">
summary ( source_table,
          output_table,
          target_cols,
          grouping_cols,
          get_distinct,
          get_quartiles,
          ntile_array,
          how_many_mfv,
          get_estimates,
          n_cols_per_run
        )
</pre><p> The <b><a class="el" href="summary_8sql__in.html#a4be51e88a1df45191a1692b95429af36">summary()</a></b> function returns a composite type containing three fields: </p><table class="output">
<tr>
<th>output_table </th><td>TEXT. The name of the output table.  </td></tr>
<tr>
<th>num_col_summarized </th><td>INTEGER. The number of columns from the source table that have been summarized.  </td></tr>
<tr>
<th>duration </th><td>FLOAT8. The time taken (in seconds) to compute the summary.  </td></tr>
</table>
<p><b>Arguments</b> </p><dl class="arglist">
<dt>source_table </dt>
<dd><p class="startdd">TEXT. Name of the table containing the input data.</p>
<p class="enddd"></p>
</dd>
<dt>output_table </dt>
<dd><p class="startdd">TEXT. Name of the table for the output summary statistics. This table contains the following columns: </p><table class="output">
<tr>
<th>group_by </th><td>Group-by column name. NULL if none provided.  </td></tr>
<tr>
<th>group_by_value </th><td>Value of the group-by column. NULL if there is no grouping.  </td></tr>
<tr>
<th>target_column </th><td>Targeted column values for which summary is requested.  </td></tr>
<tr>
<th>column_number </th><td>Physical column number for the target column, as described in <em>pg_attribute</em>  catalog.  </td></tr>
<tr>
<th>data_type </th><td>Data type of the target column. Standard GPDB type descriptors are displayed.  </td></tr>
<tr>
<th>row_count </th><td>Number of rows for the target column.  </td></tr>
<tr>
<th>distinct_values </th><td>Number of distinct values in the target column. If the <a class="el" href="summary_8sql__in.html#a4be51e88a1df45191a1692b95429af36">summary()</a> function is called with the <em>get_estimates</em> argument set to TRUE (default), then this is an estimated statistic based on the Flajolet-Martin distinct count estimator. If the <em>get_estimates</em> argument set to FALSE, will use PostgreSQL COUNT DISTINCT.  </td></tr>
<tr>
<th>missing_values </th><td>Number of missing values in the target column.  </td></tr>
<tr>
<th>blank_values </th><td>Number of blank values. Blanks are defined by this regular expression:<pre class="fragment">'^\w*$'</pre>  </td></tr>
<tr>
<th>fraction_missing </th><td>Percentage of total rows that are missing, as a decimal value, e.g. 0.3.  </td></tr>
<tr>
<th>fraction_blank </th><td>Percentage of total rows that are blank, as a decimal value, e.g. 0.3.  </td></tr>
<tr>
<th>positive_values </th><td>Number of positive values in the target column if target is numeric, otherwise NULL.  </td></tr>
<tr>
<th>negative_values </th><td>Number of negative values in the target column if target is numeric, otherwise NULL.  </td></tr>
<tr>
<th>zero_values </th><td>Number of zero values in the target column if target is numeric, otherwise NULL. Note that we are reporting exact equality to 0.0 here, so even if you have a float value that is extremely small (say due to rounding), it will not be reported as a zero value.  </td></tr>
<tr>
<th>mean </th><td>Mean value of target column if target is numeric, otherwise NULL.  </td></tr>
<tr>
<th>variance </th><td>Variance of target column if target is numeric, otherwise NULL.  </td></tr>
<tr>
<th>confidence_interval </th><td>Confidence interval (95% using z-score) of the mean value for the target column if target is numeric, otherwise NULL. Presented as an array of two elements in the form {lower bound, upper bound}.  </td></tr>
<tr>
<th>min </th><td>Minimum value of target column. For strings this is the length of the shortest string.  </td></tr>
<tr>
<th>max </th><td>Maximum value of target column. For strings this is the length of the longest string.  </td></tr>
<tr>
<th>first_quartile </th><td>First quartile (25th percentile), only for numeric columns. (Unavailable for PostgreSQL 9.3 or lower.)  </td></tr>
<tr>
<th>median </th><td>Median value of target column, if target is numeric, otherwise NULL. (Unavailable for PostgreSQL 9.3 or lower.)  </td></tr>
<tr>
<th>third_quartile </th><td>Third quartile (25th percentile), only for numeric columns. (Unavailable for PostgreSQL 9.3 or lower.)  </td></tr>
<tr>
<th>quantile_array </th><td>Percentile values corresponding to <em>ntile_array</em>. (Unavailable for PostgreSQL 9.3 or lower.)  </td></tr>
<tr>
<th>most_frequent_values </th><td>An array containing the most frequently occurring values. The <em>how_many_mfv</em> argument determines the length of the array, which is 10 by default. If the <a class="el" href="summary_8sql__in.html#a4be51e88a1df45191a1692b95429af36">summary()</a> function is called with the <em>get_estimates</em> argument set to TRUE (default), the frequent values computation is performed using a parallel aggregation method that is faster, but in some cases may fail to detect the exact most frequent values.  </td></tr>
<tr>
<th>mfv_frequencies </th><td>Array containing the frequency count for each of the most frequent values.   </td></tr>
</table>
<p class="enddd"></p>
</dd>
<dt>target_columns (optional) </dt>
<dd><p class="startdd">TEXT, default NULL. A comma-separated list of columns to summarize. If NULL, summaries are produced for all columns.</p>
<p class="enddd"></p>
</dd>
<dt>grouping_cols (optional) </dt>
<dd>TEXT, default: null. A comma-separated list of columns on which to group results. If NULL, summaries are produced for the complete table. <dl class="section note"><dt>Note</dt><dd>Please note that summary statistics are calculated for each grouping column independently. That is, grouping columns are not combined together as in the regular PostgreSQL style GROUP BY directive. (This was done to reduce long run time and huge output table size which would otherwise result in the case of large input tables with a lot of grouping_cols and target_cols specified.)</dd></dl>
</dd>
<dt>get_distinct (optional) </dt>
<dd><p class="startdd">BOOLEAN, default TRUE. If true, distinct values are counted. The method for computing distinct values depends on the setting of the 'get_estimates' parameter below.</p>
<p class="enddd"></p>
</dd>
<dt>get_quartiles (optional) </dt>
<dd><p class="startdd">BOOLEAN, default TRUE. If TRUE, quartiles are computed.</p>
<p class="enddd"></p>
</dd>
<dt>ntile_array (optional) </dt>
<dd>FLOAT8[], default NULL. An array of quantile values to compute. If NULL, quantile values are not computed. <dl class="section note"><dt>Note</dt><dd>Quartile and quantile functions are not available in PostgreSQL 9.3 or lower. If you are using PostgreSQL 9.3 or lower, the output table will not contain these values, even if you set 'get_quartiles' = TRUE or provide an array of quantile values for the parameter 'ntile_array'.</dd></dl>
</dd>
<dt>how_many_mfv (optional) </dt>
<dd><p class="startdd">INTEGER, default: 10. The number of most-frequent-values to compute. The method for computing MFV depends on the setting of the 'get_estimates' parameter below.</p>
<p class="enddd"></p>
</dd>
<dt>get_estimates (optional) </dt>
<dd><p class="startdd">BOOLEAN, default TRUE. If TRUE, estimated values are produced for distinct values and most frequent values. If FALSE, exact values are calculated which will take longer to run, with the impact depending on data size.</p>
<p class="enddd"></p>
</dd>
<dt>n_cols_per_run (optional) </dt>
<dd>INTEGER, default: 15. The number of columns to collect summary statistics in one pass of the data. This parameter determines the number of passes through the data. For e.g., with a total of 40 columns to summarize and 'n_cols_per_run = 15', there will be 3 passes through the data, with each pass summarizing a maximum of 15 columns. <dl class="section note"><dt>Note</dt><dd>This parameter should be used with caution. Increasing this parameter could decrease the total run time (if number of passes decreases), but will increase the memory consumption during each run. Since PostgreSQL limits the memory available for a single aggregate run, this increased memory consumption could result in an out-of-memory termination error.</dd></dl>
</dd>
</dl>
<p><a class="anchor" id="examples"></a></p><dl class="section user"><dt>Examples</dt><dd></dd></dl>
<ol type="1">
<li>View online help for the <a class="el" href="summary_8sql__in.html#a4be51e88a1df45191a1692b95429af36">summary()</a> function. <pre class="example">
SELECT * FROM madlib.summary();
</pre></li>
<li>Create an input data table using part of the well known iris data set. <pre class="example">
DROP TABLE IF EXISTS iris;
CREATE TABLE iris (id INT, sepal_length FLOAT, sepal_width FLOAT,
                    petal_length FLOAT, petal_width FLOAT,
                   class_name text);
INSERT INTO iris VALUES
(1,5.1,3.5,1.4,0.2,'Iris-setosa'),
(2,4.9,3.0,1.4,0.2,'Iris-setosa'),
(3,4.7,3.2,1.3,0.2,'Iris-setosa'),
(4,4.6,3.1,1.5,0.2,'Iris-setosa'),
(5,5.0,3.6,1.4,0.2,'Iris-setosa'),
(6,5.4,3.9,1.7,0.4,'Iris-setosa'),
(7,4.6,3.4,1.4,0.3,'Iris-setosa'),
(8,5.0,3.4,1.5,0.2,'Iris-setosa'),
(9,4.4,2.9,1.4,0.2,'Iris-setosa'),
(10,4.9,3.1,1.5,0.1,'Iris-setosa'),
(11,7.0,3.2,4.7,1.4,'Iris-versicolor'),
(12,6.4,3.2,4.5,1.5,'Iris-versicolor'),
(13,6.9,3.1,4.9,1.5,'Iris-versicolor'),
(14,5.5,2.3,4.0,1.3,'Iris-versicolor'),
(15,6.5,2.8,4.6,1.5,'Iris-versicolor'),
(16,5.7,2.8,4.5,1.3,'Iris-versicolor'),
(17,6.3,3.3,4.7,1.6,'Iris-versicolor'),
(18,4.9,2.4,3.3,1.0,'Iris-versicolor'),
(19,6.6,2.9,4.6,1.3,'Iris-versicolor'),
(20,5.2,2.7,3.9,1.4,'Iris-versicolor'),
(21,6.3,3.3,6.0,2.5,'Iris-virginica'),
(22,5.8,2.7,5.1,1.9,'Iris-virginica'),
(23,7.1,3.0,5.9,2.1,'Iris-virginica'),
(24,6.3,2.9,5.6,1.8,'Iris-virginica'),
(25,6.5,3.0,5.8,2.2,'Iris-virginica'),
(26,7.6,3.0,6.6,2.1,'Iris-virginica'),
(27,4.9,2.5,4.5,1.7,'Iris-virginica'),
(28,7.3,2.9,6.3,1.8,'Iris-virginica'),
(29,6.7,2.5,5.8,1.8,'Iris-virginica'),
(30,7.2,3.6,6.1,2.5,'Iris-virginica');
</pre></li>
<li>Run the <b><a class="el" href="summary_8sql__in.html#a4be51e88a1df45191a1692b95429af36">summary()</a></b> function using all defaults. <pre class="example">
DROP TABLE IF EXISTS iris_summary;
SELECT * FROM madlib.summary( 'iris',            -- Source table
                              'iris_summary'     -- Output table
                            );
</pre> Result: <pre class="result">
 output_table | num_col_summarized |     duration
--------------+--------------------+-------------------
 iris_summary |                  6 | 0.574938058853149
(1 row)
</pre> View the summary data. <pre class="example">
-- Turn on expanded display for readability.
\x on
SELECT * FROM iris_summary;
</pre> Result (partial): <pre class="result">
...
&#160;-[ RECORD 2 ]--------+---------------------------------------------
group_by             |
group_by_value       |
target_column        | sepal_length
column_number        | 2
data_type            | float8
row_count            | 30
distinct_values      | 22
missing_values       | 0
blank_values         |
fraction_missing     | 0
fraction_blank       |
positive_values      | 30
negative_values      | 0
zero_values          | 0
mean                 | 5.84333333333333
variance             | 0.929436781609188
confidence_interval  | {5.49834423494374,6.18832243172292}
min                  | 4.4
max                  | 7.6
first_quartile       | 4.925
median               | 5.75
third_quartile       | 6.575
most_frequent_values | {4.9,6.3,5,6.5,4.6,7.2,5.5,5.7,7.3,6.7}
mfv_frequencies      | {4,3,2,2,2,1,1,1,1,1}
...
&#160;-[ RECORD 6 ]--------+---------------------------------------------
group_by             |
group_by_value       |
target_column        | class_name
column_number        | 6
data_type            | text
row_count            | 30
distinct_values      | 3
missing_values       | 0
blank_values         | 0
fraction_missing     | 0
fraction_blank       | 0
positive_values      |
negative_values      |
zero_values          |
mean                 |
variance             |
confidence_interval  |
min                  | 11
max                  | 15
first_quartile       |
median               |
third_quartile       |
most_frequent_values | {Iris-setosa,Iris-versicolor,Iris-virginica}
mfv_frequencies      | {10,10,10}
</pre> Note that for the text column in record 6, some statistics are n/a, and the min and max values represent the length of the shortest and longest strings respectively.</li>
<li>Now group by the class of iris: <pre class="example">
DROP TABLE IF EXISTS iris_summary;
SELECT * FROM madlib.summary( 'iris',                       -- Source table
                              'iris_summary',               -- Output table
                              'sepal_length, sepal_width',  -- Columns to summarize
                              'class_name'                  -- Grouping column
                            );
SELECT * FROM iris_summary;
</pre> Result (partial): <pre class="result">
&#160;-[ RECORD 1 ]--------+----------------------------------------
group_by             | class_name
group_by_value       | Iris-setosa
target_column        | sepal_length
column_number        | 2
data_type            | float8
row_count            | 10
distinct_values      | 7
missing_values       | 0
blank_values         |
fraction_missing     | 0
fraction_blank       |
positive_values      | 10
negative_values      | 0
zero_values          | 0
mean                 | 4.86
variance             | 0.0848888888888875
confidence_interval  | {4.67941507384182,5.04058492615818}
min                  | 4.4
max                  | 5.4
first_quartile       | 4.625
median               | 4.9
third_quartile       | 5
most_frequent_values | {4.9,5,4.6,5.1,4.7,5.4,4.4}
mfv_frequencies      | {2,2,2,1,1,1,1}
...
&#160;-[ RECORD 3 ]--------+----------------------------------------
group_by             | class_name
group_by_value       | Iris-versicolor
target_column        | sepal_length
column_number        | 2
data_type            | float8
row_count            | 10
distinct_values      | 10
missing_values       | 0
blank_values         |
fraction_missing     | 0
fraction_blank       |
positive_values      | 10
negative_values      | 0
zero_values          | 0
mean                 | 6.1
variance             | 0.528888888888893
confidence_interval  | {5.64924734548141,6.55075265451859}
min                  | 4.9
max                  | 7
first_quartile       | 5.55
median               | 6.35
third_quartile       | 6.575
most_frequent_values | {6.9,5.5,6.5,5.7,6.3,4.9,6.6,5.2,7,6.4}
mfv_frequencies      | {1,1,1,1,1,1,1,1,1,1}
...
</pre></li>
<li>Trying some other parameters: <pre class="example">
DROP TABLE IF EXISTS iris_summary;
SELECT * FROM madlib.summary( 'iris',                       -- Source table
                              'iris_summary',               -- Output table
                              'sepal_length, sepal_width',  -- Columns to summarize
                               NULL,                        -- No grouping
                               TRUE,                        -- Get distinct values
                               FALSE,                       -- Dont get quartiles
                               ARRAY[0.33, 0.66],           -- Get ntiles
                               3,                           -- Number of MFV to compute
                               FALSE                        -- Get exact values
                            );
SELECT * FROM iris_summary;
</pre> Result: <pre class="result">
&#160;-[ RECORD 1 ]--------+------------------------------------
group_by             |
group_by_value       |
target_column        | sepal_length
column_number        | 2
data_type            | float8
row_count            | 30
distinct_values      | 22
missing_values       | 0
blank_values         |
fraction_missing     | 0
fraction_blank       |
positive_values      | 30
negative_values      | 0
zero_values          | 0
mean                 | 5.84333333333333
variance             | 0.929436781609175
confidence_interval  | {5.49834423494375,6.18832243172292}
min                  | 4.4
max                  | 7.6
quantile_array       | {5.057,6.414}
most_frequent_values | {4.9,6.3,6.5}
mfv_frequencies      | {4,3,2}
&#160;-[ RECORD 2 ]--------+------------------------------------
group_by             |
group_by_value       |
target_column        | sepal_width
column_number        | 3
data_type            | float8
row_count            | 30
distinct_values      | 14
missing_values       | 0
blank_values         |
fraction_missing     | 0
fraction_blank       |
positive_values      | 30
negative_values      | 0
zero_values          | 0
mean                 | 3.04
variance             | 0.13903448275862
confidence_interval  | {2.90656901047539,3.17343098952461}
min                  | 2.3
max                  | 3.9
quantile_array       | {2.9,3.2}
most_frequent_values | {2.9,3,3.2}
mfv_frequencies      | {4,4,3}
</pre></li>
</ol>
<p><a class="anchor" id="notes"></a></p><dl class="section user"><dt>Notes</dt><dd><ul>
<li>Table names can be optionally schema qualified (current_schemas() would be searched if a schema name is not provided) and table and column names should follow case-sensitivity and quoting rules per the database. (For instance, 'mytable' and 'MyTable' both resolve to the same entity, i.e. 'mytable'. If mixed-case or multi-byte characters are desired for entity names then the string should be double-quoted; in this case the input would be '"MyTable"').</li>
<li>The <em>get_estimates</em> parameter controls computation for both distinct count and most frequent values:<ul>
<li>If <em>get_estimates</em> is TRUE then the distinct value computation is estimated using Flajolet-Martin. MFV is computed using a fast method that does parallel aggregation in Greenplum Database at the expense of missing or duplicating some of the most frequent values.</li>
<li>If <em>get_estimates</em> is FALSE then the distinct values are computed in a slower but exact method using PostgreSQL COUNT DISTINCT. MFV is computed using a faithful implementation that preserves the approximation guarantees of the Cormode/Muthukrishnan method (more information at <a class="el" href="group__grp__mfvsketch.html">MFV (Most Frequent Values)</a>).</li>
</ul>
</li>
</ul>
</dd></dl>
<p><a class="anchor" id="related"></a></p><dl class="section user"><dt>Related Topics</dt><dd>File <a class="el" href="summary_8sql__in.html" title="Summary function for descriptive statistics. ">summary.sql_in</a> documenting the <b><a class="el" href="summary_8sql__in.html#a4be51e88a1df45191a1692b95429af36">summary()</a></b> function</dd></dl>
<p><a class="el" href="group__grp__fmsketch.html">FM (Flajolet-Martin)</a> <br />
 <a class="el" href="group__grp__mfvsketch.html">MFV (Most Frequent Values)</a> <br />
 <a class="el" href="group__grp__countmin.html">CountMin (Cormode-Muthukrishnan)</a> </p>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="footer">Generated on Thu Feb 23 2023 19:26:41 for MADlib by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>
