Skip to content

This is a method for the dplyr summarise() generic. It generates the SELECT clause of the SQL query, and generally needs to be combined with group_by().


# S3 method for tbl_lazy
summarise(.data, ..., .by = NULL, .groups = NULL)



A lazy data frame backed by a database query.


<data-masking> Variables, or functions of variables. Use desc() to sort a variable in descending order.



<tidy-select> Optionally, a selection of columns to group by for just this operation, functioning as an alternative to group_by(). For details and examples, see ?dplyr_by.


[Experimental] Grouping structure of the result.

  • "drop_last": dropping the last level of grouping. This was the only supported option before version 1.0.0.

  • "drop": All levels of grouping are dropped.

  • "keep": Same grouping structure as .data.

When .groups is not specified, it defaults to "drop_last".

In addition, a message informs you of that choice, unless the result is ungrouped, the option "dplyr.summarise.inform" is set to FALSE, or when summarise() is called from a function in a package.


Another tbl_lazy. Use show_query() to see the generated query, and use collect() to execute the query and return data to R.


library(dplyr, warn.conflicts = FALSE)

db <- memdb_frame(g = c(1, 1, 1, 2, 2), x = c(4, 3, 6, 9, 2))
db %>%
  summarise(n()) %>%
#> <SQL>
#> SELECT COUNT(*) AS `n()`
#> FROM `dbplyr_lnNPagXbE9`

db %>%
  group_by(g) %>%
  summarise(n()) %>%
#> <SQL>
#> SELECT `g`, COUNT(*) AS `n()`
#> FROM `dbplyr_lnNPagXbE9`
#> GROUP BY `g`