SQL cобеседования
778 subscribers
97 photos
181 links
Подготовка к собеседованиям в IT

Еще больше разобранных вопросов для подготовки на сайте https://frontview-it.ru

Backend - @frontview_backend
Frontend - @frontview_it
Все IT вакансии - @frontview_all_vacancies
Download Telegram
Медиана — это значение, которое делит набор данных на две равные части. В SQL медиану можно найти с помощью оконных функций и агрегации. Для нечетного количества строк медиана — это значение в середине, для четного — среднее двух центральных значений.


WITH OrderedData AS (
SELECT value,
ROW_NUMBER() OVER (ORDER BY value) AS row_num,
COUNT(*) OVER () AS total_count
FROM dataset
)
SELECT AVG(value) AS median
FROM OrderedData
WHERE row_num IN (
(total_count + 1) / 2,
(total_count + 2) / 2
);


Запрос сортирует данные, нумерует строки и находит центральные значения. Если количество строк четное, вычисляется среднее между двумя центральными значениями. Этот подход работает в большинстве SQL-систем.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤔1
🟠Сводные таблицы (pivot tables) агрегируют данные, преобразуя строки в столбцы. В SQL для этого используют CASE или PIVOT (в поддерживаемых СУБД).

Пример с CASE (универсальный сп
особ):


SELECT
product_category,
SUM(CASE WHEN year = 2022 THEN revenue ELSE 0 END) AS revenue_2022,
SUM(CASE WHEN year = 2023 THEN revenue ELSE 0 END) AS revenue_2023
FROM sales
GROUP BY product_category;


Группирует выручку по категориям товаров с разбивкой по годам.

Пример с PIVOT (SQL Server, Oracl
e):


SELECT *
FROM (
SELECT product_category, year, revenue
FROM sales
) AS source
PIVOT (
SUM(revenue) FOR year IN ([2022], [2023])
) AS pivot_table;


Аналогичный результат, но с использованием встроенного оператора.

Для динамического свода (когда столбцы заранее неизвестны) потребуется динамический SQL.

Ставь 👍, если было полезно!
Больше ответов на сайте 👈

✈️ SQL собеседования
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12