================================================================================
Simple single group
================================================================================

from employees
group title (
  aggregate {
    average salary,
    ct = count
  }
)

--------------------------------------------------------------------------------

(program
  (pipeline
    (from
      (keyword_from)
      (identifier))
    (transforms
      (group
        (keyword_group)
        (term
          (field
            (identifier)))
        (aggregate
          (keyword_aggregate)
          (aggregate_operation
            (keyword_average)
            (field
              (identifier)))
          (assignment
            (field
              (identifier))
            (field
              (identifier))))))))

================================================================================
Simple group
================================================================================

from employees
group {title, country} (
  aggregate {
    average salary,
    ct = count
  }
)

--------------------------------------------------------------------------------

(program
  (pipeline
    (from
      (keyword_from)
      (identifier))
    (transforms
      (group
        (keyword_group)
        (term
          (field
            (identifier)))
        (term
          (field
            (identifier)))
        (aggregate
          (keyword_aggregate)
          (aggregate_operation
            (keyword_average)
            (field
              (identifier)))
          (assignment
            (field
              (identifier))
            (field
              (identifier))))))))

================================================================================
Group sort take
================================================================================

from employees
sort join_date
take 1

--------------------------------------------------------------------------------

(program
  (pipeline
    (from
      (keyword_from)
      (identifier))
    (transforms
      (sorts
        (keyword_sort)
        (identifier))
      (takes
        (keyword_take)
        (integer)))))

================================================================================
Group one column; sort and take
================================================================================

from employees
group role (
  sort join_date  # taken from above
  take 1
)

--------------------------------------------------------------------------------

(program
  (pipeline
    (from
      (keyword_from)
      (identifier))
    (transforms
      (group
        (keyword_group)
        (term
          (field
            (identifier)))
        (sorts
          (keyword_sort)
          (identifier))
        (comment)
        (takes
          (keyword_take)
          (integer))))))

================================================================================
Default windows
================================================================================

from employees
sort age
derive rnk = rank

--------------------------------------------------------------------------------

(program
  (pipeline
    (from
      (keyword_from)
      (identifier))
    (transforms
      (sorts
        (keyword_sort)
        (identifier))
      (derives
        (keyword_derive)
        (term
          (assignment
            (field
              (identifier))
            (field
              (identifier))))))))
