Форум программистов, компьютерный форум, киберфорум
sqltd1
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

DuckDB - первые впечатления - 4

Запись от sqltd1 размещена 14.05.2022 в 16:44
Показов 1347 Комментарии 0

Вкусняшки, добавленные в SQL.

Сперва я хотел написать про индексы. Но, когда начал разбираться, вылезли разные неожиданности - типа невозможности сохранить индекс, построенный с помощью CREATE INDEX и некоторые другие странности.

Поэтому, тема индексов немного отложена, а я просто бегло перескажу содержание последней заметки в блоге разработчиков https://duckdb.org/2022/05/04/friendlier-sql.html



SELECT * EXCLUDE

В DuckDB можно исключить некоторые столбцы из запроса SELECT * с помощью модификатора EXCLUDE

Пример
SQL
1
2
3
4
SELECT 
    sw.* EXCLUDE (jar_jar_binks, midichlorians),
    ff.* EXCLUDE cancellation
FROM star_wars sw, firefly ff


SELECT * REPLACE

В DuckDB можно модифицировать некоторые столбцы из запроса SELECT * с помощью модификатора REPLACE

Пример

SQL
1
2
3
SELECT 
    * REPLACE (movie_count+3 AS movie_count, show_count*1000 AS show_count)
FROM star_wars_owned_by_disney


GROUP BY ALL

В DuckDB можно отказаться от перечисления столбцов в GROUP BY и заменить GROUP BY .... на GROUP BY ALL если список столбцов в GROUP BY состоит из всех столбцов (за исключением тех, по которым производится агрегирование) запроса SELECT

Пример

SQL
1
2
3
4
5
6
7
8
SELECT
    systems,
    planets,
    cities,
    cantinas,
    SUM(scum + villainy) AS total_scum_and_villainy
FROM star_wars_locations
GROUP BY ALL



Поразитесь как лаконично могут выглядеть громоздкие запросы:

SQL
1
2
3
4
SELECT * EXCLUDE (cantinas, booths, scum, villainy),
    SUM(scum + villainy) AS total_scum_and_villainy
FROM star_wars_locations
GROUP BY ALL -- GROUP BY systems, planets, cities


ORDER BY ALL

А как насчет ORDER BY?
Да так-же. Разработчики не могли обойти эту конструкцию стороной

Пример
SQL
1
2
3
4
5
6
SELECT
    age,
    SUM(civility) AS total_civility
FROM star_wars_universe
GROUP BY ALL
ORDER BY ALL -- ORDER BY age, total_civility


В DuckDB можно добавлять запятую после последнего столбца в списке столбцов. Интересно, это они из Go позаимствовали? (Кстати, очень удобно)

Пример
SQL
1
2
3
4
5
6
7
8
SELECT
    x_wing,
    proton_torpedoes,
    --targeting_computer
FROM luke_whats_wrong
GROUP BY
    x_wing,
    proton_torpedoes,


Интенсивное использование псевдонимов для функций

Для многих функций DuckDB поддерживает несколько имен, чтобы соответствовать популярным базам данных. Это в первую очередь относится к PostgreSQL и SQLite.

Пример
SQL
1
2
3
4
SELECT
    'Use the Force, Luke'[:13] AS sliced_quote_1,
    substr('I am your father', 1, 4) AS sliced_quote_2,
    SUBSTRING('Obi-Wan Kenobi, you''re my only hope',17,100) AS sliced_quote_3
Размещено в DuckDB
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru