> For the complete documentation index, see [llms.txt](https://docs.ninox.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ninox.com/builder-hub/visualize-and-organize-your-data/customize-your-tables/organize-table-records.md).

# Organize table records

Organize records and summarize column values in a table display.

Use table controls to arrange records and focus on the records you need.

Sort records to bring values into a useful order. Filter records with field-specific conditions. Group records with the same field value together.

You can use these controls wherever tables appear, including views, pages, and form views. They affect only the current table display. They do not change or delete records.

In **Builder mode**, you can also sort and group records from a column header directly.

## Sort records

Sort records when you need a consistent order. Use the toolbar or, in **Builder mode**, the column header menu.

{% tabs %}
{% tab title="Use the toolbar" %}
{% stepper %}
{% step %}

#### Open the sorting options

Open the table view. In the toolbar, click **Sort**.
{% endstep %}

{% step %}

#### Choose the sort order

Select the field to sort by.

Click <i class="fa-arrow-up">:arrow-up:</i> **Ascending** or <i class="fa-arrow-down">:arrow-down:</i> **Descending**.
{% endstep %}
{% endstepper %}

The toolbar shows the field used for sorting. Its column header shows <i class="fa-arrow-up">:arrow-up:</i> or <i class="fa-arrow-down">:arrow-down:</i>.
{% endtab %}

{% tab title="Use the column header" %}
{% stepper %}
{% step %}

#### Open the column menu

In **Builder mode**, click the header of the column you want to sort by.
{% endstep %}

{% step %}

#### Choose the sort order

Select **Sort A → Z** or **Sort Z → A**.
{% endstep %}

{% step %}

#### Clear sorting

Open the column menu and select **Clear sort**.
{% endstep %}
{% endstepper %}
{% endtab %}
{% endtabs %}

{% hint style="info" %}
**Color** fields sort alphabetically by color name. **Icon** fields sort alphabetically by icon name.
{% endhint %}

## Filter records

Filters limit records to those that match the conditions you set.

A filter has three parts:

* **Where** selects the field to check.
* **Operator** defines how Ninox compares that field.
* **Value** supplies the value to match when required.

The available operators and value control depend on the selected field type.

{% stepper %}
{% step %}

#### Open the filter options

In the table view toolbar, click **Filter**.
{% endstep %}

{% step %}

#### Choose a field

Under **Where**, select the field that contains the data you want to filter.
{% endstep %}

{% step %}

#### Set the operator and value

Under **Operator**, choose the comparison that fits the field.

Enter or select a value when the operator requires one.
{% endstep %}

{% step %}

#### Add or remove conditions

Select another field in **Where** to add a condition and narrow the records further.

After you add a condition, the number in parentheses shows how many conditions are active.

Click <i class="fa-trash-can">:trash-can:</i> **Remove filter** to delete a condition.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
A filter controls only which records appear in the current table display. Use permissions to control access to sensitive data.
{% endhint %}

### Filter by what you want to match

Choose the field you want to filter. Then select an operator and enter the required value.

#### Match an exact value

Use **is** or **is not** when the field must equal a complete value.

* **Text**, **Multi-line text**, **Email**, **Phone**, **URL**, **Location**, **Appointment**, and **Rich text**: enter the complete value.
* **Choice** fields: select the choice or choices to match.
* **Number**: enter the exact number.
* **Date**: enter a date or select it from the calendar.
* **Date and time**: enter the complete date and time.
* **Time** and **Duration**: enter the value in `hh:mm` format, such as `10:00`.
* **Yes/No**: select **Yes** or **No**.
* **User**: enter the exact user.
* **Color**: enter a color name, hex code, or RGB value.
* **Icon**: enter the icon name.

#### Match part of a value

Use **contains** or **does not contain** when any part of the value can match.

These operators are available for **Text**, **Multi-line text**, **Email**, **Phone**, **URL**, **Location**, **Appointment**, and **Rich text**.

#### Match values from a list

Use **in list** or **not in list** when any of several values can match.

These operators are available for **Text**, **Multi-line text**, **Email**, **Phone**, **URL**, **Location**, **Appointment**, and **Choice** fields.

For text-based fields, enter complete values separated by commas. Matching is case-sensitive.

#### Compare values or date ranges

Use **greater than**, **greater than or equal**, **less than**, or **less than or equal** to compare values.

These operators are available for **Number**, **Date**, **Date and time**, **Time**, and **Duration**.

Use **in range** for **Date** and **Date and time**. Select a predefined period such as **Today** or **This week**.

#### Find empty or filled fields

Use **is empty** to find records without a value. Use **is not empty** to find records with a value.

**File**, **Signature**, and **Logic** fields support only these operators.

## Watch how to filter and sort records

{% embed url="<https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYwCp7NT87JGgngrkhfHT%2Fuploads%2FYLR6DBOtK2a8WOLQcZqb%2Fsort%20and%20filter%201080p.mp4?alt=media&token=1c5ea433-8804-4464-9dce-678a7b52f6b5>" %}

## Group records

Group records by a field to scan categories, statuses, or dates more easily. Use the toolbar or, in **Builder mode**, the column header menu.

{% tabs %}
{% tab title="Use the toolbar" %}
{% stepper %}
{% step %}

#### Open the grouping options

Open the table view. In the toolbar, click **Group**.
{% endstep %}

{% step %}

#### Group the records

Choose the field to group by.

Ninox organizes the visible records into groups based on the field values. You can group by a field even when its column is hidden.

Click <i class="fa-arrow-up">:arrow-up:</i> **Ascending** or <i class="fa-arrow-down">:arrow-down:</i> **Descending** to set the group order.

The toolbar shows the field used for grouping.
{% endstep %}

{% step %}

#### Clear grouping

Click **Clear grouping** to remove grouping.
{% endstep %}
{% endstepper %}
{% endtab %}

{% tab title="Use the column header" %}
{% stepper %}
{% step %}

#### Open the column menu

In **Builder mode**, click the header of the column you want to group by.
{% endstep %}

{% step %}

#### Group the records

Select **Group by this column**.

Ninox organizes the visible records into groups based on the column values.
{% endstep %}
{% endstepper %}
{% endtab %}
{% endtabs %}

{% hint style="info" %}
For **Rich text** fields, records group together only when content and formatting are identical.
{% endhint %}

## Aggregate column values

Use aggregation to summarize values in a grouped table. Available calculations depend on the field type.

{% stepper %}
{% step %}

#### Open the column menu

In **Builder mode**, click the header of the column you want to summarize.
{% endstep %}

{% step %}

#### Choose an aggregation

Select **Aggregation**, then choose the calculation you need.

For example, use **Sum** for amounts, **Average** for ratings, or **Count** for records.

Without grouping, Ninox displays the result in the table footer. With grouping, it displays the result in each group header.
{% endstep %}
{% endstepper %}

### Choose the summary you want to display

Choose an aggregation based on the question you want the table to answer:

* **Count** counts the number of records in the column. Use it to see how many records each group contains.
* **Sum** adds numeric values. Use it for totals such as invoice amounts or hours worked.
* **Average** calculates the mean of numeric values. Use it to compare average amounts, scores, or durations.
* **Median** returns the middle numeric value. Use it when unusually high or low values would distort an average.
* **Minimum** returns the lowest number or earliest date and time. Use it to find the earliest deadline or smallest value.
* **Maximum** returns the highest number or latest date and time. Use it to find the latest deadline or largest value.
* **First** returns the first value in the current table.
* **Last** returns the last value in the current table.
* **Concatenate** combines values into one text string. Use it to show all names, statuses, or contact details in a group.
* **Unique** returns each distinct value in a list.

## Watch how to group records and use aggregations

{% embed url="<https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYwCp7NT87JGgngrkhfHT%2Fuploads%2FZGlzShPjx4kI57jjPtaR%2Fgroup%20and%20aggegations.mp4?alt=media&token=afd70580-94fa-4c65-aade-f2a32a0d631b>" %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ninox.com/builder-hub/visualize-and-organize-your-data/customize-your-tables/organize-table-records.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
