ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° Π΅ Π²Π΅ΡΡΠΈΡ Π½Π° Π‘Π£ΠΠ DuckDB 1.4.0, Π½Π°ΡΠΎΡΠ΅Π½Π° ΠΊΡΠΌ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π°Π½Π°Π»ΠΈΡΠΈΡΠ½ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»Π½ΠΎ Π½Π°ΠΏΠΎΠΌΠ½ΡΡΠ° Π½Π° SQLite. DuckDB ΡΡΡΠ΅ΡΠ°Π²Π° ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π° SQLite, ΠΊΠ°ΡΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎΡΡ, ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π² Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ» ΠΈ CLI ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π°Π½Π°Π»ΠΈΡΠΈΡΠ½ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ, ΠΎΠ±Ρ Π²Π°ΡΠ°ΡΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° ΡΠ°ΡΡ ΠΎΡ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΈΡ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈ ΠΈΠ»ΠΈ ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C++ ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ MIT.
DuckDB ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ Π΄ΠΈΠ°Π»Π΅ΠΊΡ Π½Π° SQL, ΠΊΠΎΠΉΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΈ Π΄ΡΠ»Π³ΠΎΡΡΠ°ΠΉΠ½ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ. ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ (ΠΌΠ°ΡΠΈΠ²ΠΈ, ΡΡΡΡΠΊΡΡΡΠΈ, ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ) ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΊΠΎΡΠ΅Π»Π°ΡΠΈΠ²Π½ΠΈ ΠΏΠΎΠ΄Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ. ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π²ΡΠ² ΡΠΎΡΠΌΠ°ΡΠΈ CSV ΠΈ Parquet. ΠΠ°Π»ΠΈΡΠ΅ Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠΌΠΏΠΎΡΡ ΠΎΡ Π‘Π£ΠΠ PostgreSQL.
ΠΡΠΎΠ΅ΠΊΡΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° ΠΎΡ SQLite, ΠΏΠ°ΡΡΠ΅Ρ ΠΎΡ PostgreSQL, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Date Math ΠΎΡ MonetDB, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΎΠΊΠΎΠ½Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ (Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° Segment Tree Aggregation), ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° RE2, ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ, ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡ (Multi-Version Concurrency Control), Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈ Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΈΡΠ°Π½ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π» Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° Hyper-Pipelining Query Execution, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π² Π΅Π΄Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ Π³ΠΎΠ»Π΅ΠΌΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ.
Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΎΡ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π² ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½ Π²ΠΈΠ΄. ΠΠ° ΡΠΈΡΡΠΎΠ²Π°Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌ AES-256 Π² ΡΠ΅ΠΆΠΈΠΌ GCM. ΠΡΠΈΠΏΡΠΈΡΠ° ΡΠ΅ Π½Π΅ ΡΠ°ΠΌΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ ΡΠ°ΠΉΠ» Ρ Π΄Π°Π½Π½ΠΈ, Π½ΠΎ ΠΈ WAL Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠΈΡΡΠΎΠ²Π°Π½Π΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΡΠ΅ Π·Π°Π΄Π°Π²Π°Ρ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ATTACH ΡΡΠ΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ENCRYPTION_KEY. ATTACH βencrypted.dbβ AS enc_db (ENCRYPTION_KEY βquack_quackβ);
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«MERGE INTOΒ», ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΡΠΎ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Π½Π° ΠΈΠ·ΡΠ°Π·Π° Β«INSERT β¦ ON CONFLICTΒ», Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΊΠ»ΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ Π·Π° ΡΠ»ΠΈΠ²Π°Π½Π΅. ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Β«MERGE INTOΒ» ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ»ΠΎΠ²Π½ΠΈ SQL ΠΈΠ·ΡΠ°Π·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Ρ Π² Π΅Π΄Π½ΠΎ ΠΈΠ·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ INSERT, UPDATE ΠΈ DELETE. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° MERGE ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΡΠ»ΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π²Π΅ ΡΠ°Π±Π»ΠΈΡΠΈ, ΠΊΠ°ΡΠΎ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΡ Π»ΠΈΠΏΡΠ²Π°ΡΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅. WITH deletes(item_id, delete_threshold) AS (VALUES (10, 3000)) MERGE INTO Stock USING deletes USING (item_id) WHEN MATCHED AND balance < delete_threshold THEN DELETE RETURNING merge_action, *;
- Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°Π±Π»ΠΈΡΠΈ Π² ΡΠΎΡΠΌΠ°Ρ Apache Iceberg Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ Π·Π°ΠΏΠΈΡ (ΠΏΠΎ-ΡΠ°Π½ΠΎ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ ΡΠ΅ΡΠ΅Π½Π΅), ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ Iceberg Π² DuckDB ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.
- Π ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ Π·Π° Π½Π°ΠΏΡΠ΅Π΄ΡΠΊ ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° Ρ ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΡΠ°Π²Π°ΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄ΠΎ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΊΠΎΠ½Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Β«FILLΒ», ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠΏΡΡΠ½Π°ΡΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π² ΠΏΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ. FROM (VALUES (1, 1), (2, NULL), (3, 42)) t(c1, c2) SELECT fill(c2) OVER (ORDER BY c1) f; 1 21 42
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π΅ Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Teradata Connector Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Teradata. ΠΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈ, ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° SQL ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² Teradata ΡΡΠ΅Π· DuckDB.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠΈΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ (checkpoint) Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈ, ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½ΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΊΠΎΠ΅ΡΠΎ Π΄Π°Π΄Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΏΡΠΈ ΡΠΈΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ·ΡΡΠΈΡΠΈΡΠ΅ ΡΠ΅Π΄ΠΎΠ²Π΅ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° ΠΌΡΡΡΠΎ ΡΠ»Π΅Π΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅. ATTACH β:memory:β AS memory_compressed (COMPRESS);
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ ΡΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°: Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠΎΡΡΠΈΡΠ°Π½Π΅ Π΅ ΠΏΡΠ΅Π²Π΅Π΄Π΅Π½Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΡΠ΅Π½ ΡΠ»ΠΈΠ²Π°Π½Π΅ (k-way merge sort), ΠΊΠΎΠΉΡΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ. ΠΠ±ΠΎΠ±ΡΠ΅Π½ΠΈ ΡΠ°Π±Π»ΠΈΡΠΎΠ²ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ (Common Table Expression, CTE) ΡΠ΅Π³Π° ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
