Data Science. SQL hub
По всем вопросам- @workakkk @itchannels_telegram - 🔥лучшие ит-каналы @ai_machinelearning_big_data - Machine learning @pythonl - Python @pythonlbooks- python книги📚 @datascienceiot - ml книги📚 РКН: https://vk.cc/cIi9vo #VRHSZ
Показати більше📈 Аналітичний огляд Telegram-каналу Data Science. SQL hub
Канал Data Science. SQL hub (@sqlhub) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 35 840 підписників, посідаючи 3 816 місце в категорії Технології та додатки та 18 116 місце у регіоні Росія.
📊 Показники аудиторії та динаміка
З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 35 840 підписників.
За останніми даними від 19 червня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -33, а за останні 24 години на 10, загальне охоплення залишається високим.
- Статус верифікації: Не верифікований
- Рівень залученості (ER): Середній показник залученості аудиторії становить 6.99%. Протягом перших 24 годин після публікації контент зазвичай збирає 3.45% реакцій від загальної кількості підписників.
- Охоплення публікацій: В середньому кожен допис отримує 2 504 переглядів. Протягом першої доби публікація в середньому набирає 1 238 переглядів.
- Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 11.
- Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як sql, индекс, postgres, index, sqlite.
📝 Опис та контентна політика
Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“По всем вопросам- @workakkk
@itchannels_telegram - 🔥лучшие ит-каналы
@ai_machinelearning_big_data - Machine learning
@pythonl - Python
@pythonlbooks- python книги📚
@datascienceiot - ml книги📚
РКН: https://vk.cc/cIi9vo
#VRHSZ”
Завдяки високій частоті оновлень (останні дані отримано 20 червня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.
2020-10-01 и сегодняшним днем. Полученная таблица должна состоять из двух столбцов: date и cnt_calls. В столбце date должен находиться день вызова (без времени), а в столбце "cnt_calls" должно отображаться количество звонков, совершенных в этот день.
Столбцы в результате
date
cnt_calls
Примечание: для корректной работы вашего запроса обязательно указывайте схему таблиц - tinkoff.
Например, FROM tinkoff.employees.
Пишите свое решение в комментариях👇
@sqlhubroot@kali:~# sqlmap -u 'http://targetip/mutillidae/index.php?page=user- info.php&username=admin&password=&user-info-php-submitbutton=
sqlmap вернет данные, как показано на *рисунке 1.
• Наиболее вероятной базой данных для хранения данных приложения, является БД Mutillidae;
поэтому мы проверим все таблицы этой базы данных, используя следующую команду:
root@kali:~# sqlmap -u "http://yourip/mutillidae/index.php?page=user-info.php&username=&password=&user-info-php-submit-button=View+Account+Details" -D mutillidae --tables
Данные, возвращаемые при выполнении этой команды, показаны на *рисунке 2.
📌Читать далее
@linuxkaliiALTER TABLE DB.schema.table_sourse SWITCH PARTITION 1 TO DB.schema.table_arch;
Но если мы хотим перемещать в партицированную таблицу, то таблица приемник должна использовать ту же функцию и схему партицирования, или схему и функцию повторяющую нужные нам диапазоны секционирования. Так же таблица должна содержать CONSTRAINT (ограничение), которое накладывается по полю секционирования.
ПродолжениеCREATE TABLE TMP.orders
(
ID NUMBER, -- № заказа
DATE_DOC DATE, -- дата заказа
AMOUNT NUMBER, -- сумма заказа
DISCOUNT NUMBER -- скидка от 0 до 100%
);
CREATE TABLE TMP.orders_detail
(
ID NUMBER,
ID_ORDER NUMBER, -- № заказа
ID_GOODS NUMBER, -- идентификатор товара
PRICE NUMBER, -- цена товара
QTY NUMBER, -- количество
SUM_ORDER NUMBER -- стоимость заказа
);
Перед нами стоят задачи:
1) при обновлении поля orders.discount пересчитать orders_detail.sum_order, а также обновить поле orders.amount по всему заказу;
2) при изменении orders_detail.price и(или) orders_detail.qty пересчитать orders_detail.sum_order, а также обновить поле orders.amount по всему заказу;
3) orders_detail.sum_order считается по формуле: orders_detail.sum_order = orders_detail.price * orders_detail.qty * (1- orders.discount/100).
При таких задачах возникает ошибка мутирования таблиц ORA-04091: table is mutating.
Эта ошибка встречается тогда, когда триггер уровня строк пытается выполнить чтение или запись в таблицу, для которой сработал триггер.
• Например, нам нужно пересчитать поле orders_detail.sum_order, а для этого нам нужно прочитать поле orders.discount(которое изменилось).
• Начиная с Oracle Database 11g можно использовать compound(составные) триггеры. Они представляют собой четыре различных триггера, объединенных в один.
Вот пример синтаксиса такого триггера. ⤵️
Продолжение
@sqlhubcreate index idx_partial on tab1(a, b) where a is not null and b = 5;
select * from tab1 where a is not null and b = 5; --> search table tab1 using index
🔵Индексы на выражение (Indexes On Expressions)
Если в запросах к таблице часто используется выражение, то можно построить индекс по нему. Однако следует иметь в виду, что пока оптимизатор не очень гибок и перестановка столбцов в выражении приведет к отказу от использования индекса.
create index idx_expression on tab1(a + b);
select * from tab1 where a + b > 10; --> search table tab1 using index ...
select * from tab1 where b + a > 10; --> scan table
🔵Вычисляемые колонки (Generated Columns)
Если данные столбца представляют собой результат вычисления выражения по другим столбцам, то можно создать виртуальный столбец. Есть два вида: VIRTUAL (вычисляется каждый раз при чтении таблицы и не занимает места) и STORED (вычисляется при записи данных в таблицу и место занимает). Разумеется записывать данные в такие столбцы напрямую нельзя.
create table tab1 (
a integer primary key,
b int,
c text,
d int generated always as (a * abs(b)) virtual,
e text generated always as (substr(c, b, b + 1)) stored
);
🔵 R-Tree индекс
Индекс предназначен для быстрого поиска в диапазоне значений/вложенности объектов, т.е. задачи типичной для гео-систем, когда объекты-прямоугольники заданы своей позицией и размером и требуется найти все объекты, которые пересекаются с текущим. Данный индекс реализован в виде виртуальной таблицы (см. ниже) и это индекс только по своей сути. Для поддержки R-Tree индекса требуется собрать SQLite с флагом SQLITE_ENABLE_RTREE (по умолчанию не установлен).
create virtual table idx_rtree using rtree (
id, -- ключ
minx, maxx, -- мин и макc x координаты
miny, maxy, -- мин и макc y координаты
data -- дополнительные данные
);
insert into idx_rtree values (1, -80.7749, -80.7747, 35.3776, 35.3778);
insert into idx_rtree values (2, -81.0, -79.6, 35.0, 36.2);
select id from idx_rtree
where minx >= -81.08 and maxx <= -80.58 and miny >= 35.00 and maxy <= 35.44;
Остальные возможности можно тут
@sqlhubpip3 install visidata
▪Github
▪Проект
@sqlhub
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
