---
{
    "title": "Data Querying",
    "language": "en",
    "description": "Navigate Apache Doris query capabilities by use case: SQL compatibility, multi-table joins, aggregation analytics, semi-structured data querying, and user-defined functions."
}
---

import GettingStartedCard from '@site/src/components/getting-started-card/getting-started-card';

# Data Querying

Apache Doris supports standard SQL with strong MySQL compatibility, and on top of that provides high-performance join queries, a rich set of analytic functions, semi-structured data access, and user-defined functions. Choose the documentation that matches your scenario below.

## SQL Compatibility

<div className="cards-grid">
<GettingStartedCard
    title="MySQL Compatibility"
    description="A quick reference to the differences between Doris and MySQL: covers data types, DDL/DML syntax, SQL functions, and key SQL Mode differences."
    link="mysql-compatibility"
/>
</div>

## Multi-Table Joins

<div className="cards-grid">
<GettingStartedCard
    title="Joins (JOIN)"
    description="JOIN types such as INNER / LEFT / RIGHT / FULL / SEMI / ANTI, along with four distributed JOIN implementations: Broadcast, Shuffle, Bucket Shuffle, and Colocate."
    link="join"
/>

<GettingStartedCard
    title="ASOF JOIN for Time-Series Nearest Match"
    description="For each row in the left table, find the nearest row in the right table along a time direction, enabling time-series alignment without window functions."
    link="asof-join"
/>

<GettingStartedCard
    title="Subqueries"
    description="Syntax, restrictions, and Mark Join handling for scalar, non-scalar, correlated, and uncorrelated subqueries."
    link="subquery"
/>

<GettingStartedCard
    title="Common Table Expressions (CTE)"
    description="Define temporary result sets with the WITH clause, with support for nested and recursive CTEs, suitable for hierarchy traversal, graph traversal, and similar scenarios."
    link="cte"
/>
</div>

## Aggregation and Analytics

<div className="cards-grid">
<GettingStartedCard
    title="Multi-Dimensional Aggregation Analytics"
    description="Use ROLLUP, CUBE, and GROUPING SETS to perform multi-dimensional aggregation analytics in a single SQL statement."
    link="multi-dimensional-analytics"
/>

<GettingStartedCard
    title="Analytic Functions (Window Functions)"
    description="Use the OVER clause to partition and window result sets, supporting ranking, cumulative sums, moving averages, year-over-year and quarter-over-quarter comparisons, and more."
    link="window-function"
/>
</div>

## Semi-Structured and Complex Data

<div className="cards-grid">
<GettingStartedCard
    title="Querying Complex Types"
    description="Query complex types such as Array, Map, Struct, and JSON, and process semi-structured data with dedicated SQL functions."
    link="complex-type"
/>

<GettingStartedCard
    title="Column-to-Row (Lateral View)"
    description="Use LATERAL VIEW with generator functions such as EXPLODE to expand a single row into multiple rows, enabling column-to-row SQL queries."
    link="lateral-view"
/>
</div>

## User-Defined Functions (UDF)

<div className="cards-grid">
<GettingStartedCard
    title="Java UDF / UDAF / UDWF / UDTF"
    description="Write UDF/UDAF/UDWF/UDTF user-defined functions in Java, including type mapping, registration syntax, best practices, and examples."
    link="udf/java-user-defined-function"
/>

<GettingStartedCard
    title="Python UDF / UDAF / UDWF / UDTF"
    description="Write UDF/UDAF/UDTF in Python: covers creation, vectorization, environment configuration, and common troubleshooting."
    link="udf/python-user-defined-function"
/>

<GettingStartedCard
    title="Alias Functions"
    description="Register a new signature for a function or expression fragment with CREATE ALIAS FUNCTION to improve migration compatibility and simplify writing complex queries."
    link="udf/alias-function"
/>
</div>
