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 825 名订阅者,在 技术与应用 类别中位列第 3 817,并在 俄罗斯 地区排名第 18 104 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 35 825 名订阅者。
根据 20 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -37,过去 24 小时变化为 -11,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 7.26%。内容发布后 24 小时内通常能获得 3.88% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 2 603 次浏览,首日通常累积 1 389 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 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”
凭借高频更新(最新数据采集于 21 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
select id,sum(value) over(partition by i order by y), * from table1
Примечание: все поля существуют в таблице и соответствуют нужному типу данных.
Ответ
Да, отработает. Классический пример аналитической функции, внутри которой сначала выполняется группировка (partition by), потом выполняется сортировка (order by) и применяется агрегирующая функция. В данном случае все написано правильно. Этот вопрос проверяет у кандидата знание оконных функций.
@sqlhubGROUP BY, чтобы сгруппировать похожие записи вместе, а затем удалить количество записей в каждой группе.
SELECT column_name, COUNT(*)
FROM table_name
GROUP BY column_name
HAVING COUNT(*) > 1;
2. Стандартизация текстовых полей
UPDATE table_name
SET column_name = UPPER(column_name);
Вы также можете использовать функцию REPLACE для замены определенных символов или строк в текстовых полях. Например:
UPDATE table_name
SET column_name = REPLACE(column_name, 'OldString', 'NewString');
3. Обработка отсутствующих или нулевых значений
SELECT column1, column2, ...
FROM table_name
WHERE column_name IS NULL;
Затем вы можете удалить эти записи или заменить отсутствующие значения значением по умолчанию. Например:
UPDATE table_name
SET column_name = 'DefaultValue'
WHERE column_name IS NULL;
4. Удаление кривых символов
UPDATE table_name
SET column_name = REPLACE(column_name, 'InvalidChar', '');
UPDATE table_name
SET column_name = REGEXP_REPLACE(column_name, '[^a-zA-Z0–9 ]', '');
5. Обработка выбросов
Чтобы определить и удалить выбросов, мы можем использовать функции AVG и STDDEV для расчета среднего и стандартного отклонения столбца.
SELECT AVG(column_name), STDDEV(column_name)
FROM table_name;
6. Корректировка форматов дат
Функция STR_TO_DATE может преобразовать строку в формат даты. Синтаксис функции следующий:
SELECT STR_TO_DATE(date_string, format_string)
FROM table_name;
7. Очистка текстовых данных
Функция REPLACE может заменить подстроку в строке. Функция TRIM позволяет удалить из строки ведущие и последующие пробелы. Синтаксис выглядит следующим образом:
SELECT UPPER(column_name)
FROM table_name;
SELECT REPLACE(column_name, 'old_string', 'new_string')
FROM table_name;
SELECT TRIM(column_name)
FROM table_name;
8. Проверка типов данных
Важно убедиться, что ваши данные имеют правильный тип данных. Для проверки и преобразования типов данных можно использовать функции CAST или CONVERT. Например:
SELECT CAST(column_name AS INT)
FROM table_name;
SELECT CONVERT(column_name, DATE)
FROM table_name;
@sqlhub
+----+-------+--------+--------------+
| Id | Name | Salary | DepartmentId |
+----+-------+--------+--------------+
| 1 | Joe | 70000 | 1 |
| 2 | Jim | 90000 | 1 |
| 3 | Henry | 80000 | 2 |
| 4 | Sam | 60000 | 2 |
| 5 | Max | 90000 | 1 |
+----+-------+--------+--------------+
В таблице Department содержатся сведения о подразделениях компании.
+----+----------+
| Id | Name |
+----+----------+
| 1 | IT |
| 2 | Sales |
+----+----------+
Напишите SQL-запрос, который находит в каждом из подразделений сотрудников с максимальной заработной платой. Например, для вышеприведённых таблиц подобный запрос должен возвращать результаты, представленные следующей таблицей (при этом порядок строк в таблице значения не имеет):
+------------+----------+--------+
| Department | Employee | Salary |
+------------+----------+--------+
| IT | Max | 90000 |
| IT | Jim | 90000 |
| Sales | Henry | 80000 |
+------------+----------+--------+
▍Решение: команда IN
Команда IN позволяет задавать в инструкции WHERE условия, соответствующие использованию нескольких команд OR. Например, две следующие конструкции идентичны:
WHERE country = ‘Canada’ OR country = ‘USA’
WHERE country IN (‘Canada’, ’USA’).
Здесь мы хотим получить таблицу, содержащую название подразделения (Department), имя сотрудника (Employee) и его заработную плату (Salary). Для этого мы формируем таблицу, в которой содержатся сведения об идентификаторе подразделения (DepartmentID) и о максимальной зарплате по этому подразделению. Далее мы объединяем две таблицы по условию, в соответствии с которым записи в результирующую таблицу попадают только в том случае, если DepartmentID и Salary есть в ранее сформированной таблице.
SELECT
Department.name AS 'Department',
Employee.name AS 'Employee',
Salary
FROM Employee
INNER JOIN Department ON Employee.DepartmentId = Department.Id
WHERE (DepartmentId , Salary)
IN
( SELECT
DepartmentId, MAX(Salary)
FROM
Employee
GROUP BY DepartmentId
)
@sqlhub+---------+---------+
| id | student |
+---------+---------+
| 1 | Abbot |
| 2 | Doris |
| 3 | Emerson |
| 4 | Green |
| 5 | Jeames |
+---------+---------+
Вот что должно получиться после пересаживания соседних учеников:
+---------+---------+
| id | student |
+---------+---------+
| 1 | Doris |
| 2 | Abbot |
| 3 | Green |
| 4 | Emerson |
| 5 | Jeames |
+---------+---------+
Напишите запрос, который позволит учительнице решить вышеописанную задачу.
Обратите внимание на то, что если количество учеников является нечётным — последнего ученика никуда пересаживать не надо.
▍Решение: использование оператора WHEN
SQL-конструкцию CASE WHEN THEN можно рассматривать как оператор if в программировании.
В нашем случае первый оператор WHEN используется для проверки того, назначен ли последней строке в таблице нечётный идентификатор. Если это так — строка не подвергается изменениям. Второй оператор WHEN отвечает за добавление 1 к каждому нечётному идентификатору (например — 1, 3, 5 превращается в 2, 4, 6) и за вычитание 1 из каждого чётного идентификатора (2, 4, 6 превращаются в 1, 3, 5).
SELECT
CASE
WHEN((SELECT MAX(id) FROM seat)%2 = 1) AND id = (SELECT MAX(id) FROM seat) THEN id
WHEN id%2 = 1 THEN id + 1
ELSE id - 1
END AS id, student
FROM seat
ORDER BY id
@sqlhubDISTINCT. Однако, это простое решение не всегда будет верным.
Чтобы гарантировать отсутствие дубликатов в наборе данных, СУБД необходимо сравнить все строки друг с другом, отсеяв повторы. Это требует много ресурсов ЦП и памяти для хранения всех строк, т.к. их нужно сравнивать друг с другом в памяти, даже если на низком уровне идет работа с хэшем. Кроме того, DISTINCT уменьшает параллелизм вычислений, снижая скорость выполнения запроса.
DISTINCT удаляет дубликаты, но не разрешает неправильные соединения и фильтры, которые на практике чаще всего и приводят к повторам, например, из-за CROSS JOIN или использования RANK вместо ROW_NUMBER, что приводит к дублированию из-за плохо определенного окна раздела.
Подробности с примерами кода смотрите здесь: https://jmarquesdatabeyond.medium.com/sql-like-a-pro-please-stop-using-distinct-31bdb6481256
@sqlhub
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
