Как оператор GROUP BY обрабатывает поля с NULL?
Учитывая, что NULL в SQL — просто отсутствие значения, то все значения NULL при группировке попадают в одну группу. Например, пусть есть таблица:
name score
Alex 5
Sam 1
Sam 11
NULL 4
NULL 3
Тогда запрос
SELECT name, SUM (score) AS sc
FROM table
GROUP BY name;
выдаст:
name sc
Alex 5
Sam 12
NULL 7
Учитывая, что NULL в SQL — просто отсутствие значения, то все значения NULL при группировке попадают в одну группу. Например, пусть есть таблица:
name score
Alex 5
Sam 1
Sam 11
NULL 4
NULL 3
Тогда запрос
SELECT name, SUM (score) AS sc
FROM table
GROUP BY name;
выдаст:
name sc
Alex 5
Sam 12
NULL 7
👍21
Что покажет следующий запрос:
select seller_id, count(*) from Orders GROUP BY seller_id HAVING seller_id IN (2,4,6);
select seller_id, count(*) from Orders GROUP BY seller_id HAVING seller_id IN (2,4,6);
Anonymous Quiz
63%
Количество заказов, сгруппированное по продавцам 2, 4 и 6
16%
Количество продавцов, у которых 2, 4 или 6 товаров
16%
Ничего, запрос составлен неверно: для указания условия должно быть использовано WHERE
4%
Посмотреть ответ
👍12🔥1
Forwarded from SQL и БД Learning
#Вопросы_с_собеседования
❓При выборке из таблицы workers прибавьте к дате 3 дня и отнимите 2 часа
Ответ на картинке.
❓При выборке из таблицы workers прибавьте к дате 3 дня и отнимите 2 часа
Ответ на картинке.
👍7
SQL-инъекции для самых маленьких. Часть 3
В статье вы узнаете, как можно собирать информацию о БД путем применения инъекций и затронем тему слепых SQL-инъекций.
Смотреть статью
В статье вы узнаете, как можно собирать информацию о БД путем применения инъекций и затронем тему слепых SQL-инъекций.
Смотреть статью
👍4
#Вопросы_с_собеседования
❓При выборке из таблицы workers получите первые 5 символов поля denoscription
Ответ на картинке.
❓При выборке из таблицы workers получите первые 5 символов поля denoscription
Ответ на картинке.
👍9❤1
Какая разница между TRUNCATE TABLE table_name и DELETE FROM table_name?
Фактически обе эти команды вызовут удаление всех строк из таблицы под названием table_name, но вот произойдет это совсем по-разному:
1. При вызове команды TRUNCATE таблица полностью сбрасывается и создается снова, в то время как команда DELETE удаляет каждую строку таблицы по отдельности. Из-за этого TRUNCATE отрабатывает значительно быстрее.
2. Как следствие первого пункта, команда TRUNCATE не вызывает срабатывание триггеров и правил внешних ключей, то есть, очищая таблицу таким способом, можно не бояться каскадного удаления или изменения данных в других таблицах.
3. В отличие от DELETE команда TRUNCATE не транзакционная. То есть, если в момент ее вызова, таблица table_name будет заблокирована какой-либо транзакцией — может возникнуть ошибка.
Фактически обе эти команды вызовут удаление всех строк из таблицы под названием table_name, но вот произойдет это совсем по-разному:
1. При вызове команды TRUNCATE таблица полностью сбрасывается и создается снова, в то время как команда DELETE удаляет каждую строку таблицы по отдельности. Из-за этого TRUNCATE отрабатывает значительно быстрее.
2. Как следствие первого пункта, команда TRUNCATE не вызывает срабатывание триггеров и правил внешних ключей, то есть, очищая таблицу таким способом, можно не бояться каскадного удаления или изменения данных в других таблицах.
3. В отличие от DELETE команда TRUNCATE не транзакционная. То есть, если в момент ее вызова, таблица table_name будет заблокирована какой-либо транзакцией — может возникнуть ошибка.
👍8
#Вопросы_с_собеседования
❓Для каких числовых типов недопустимо использовать операции сложения/вычитания?
Ответ:
В качестве операндов операций сложения и вычитания нельзя использовать числовой тип BIT. BIT - целочисленный тип данных, который может принимать значения 1, 0 или NULL.
❓Для каких числовых типов недопустимо использовать операции сложения/вычитания?
Ответ:
👍8
#Вопросы_с_собеседования
❓Выберите из таблицы workers записи с id равным 1, 2, 3, 7, 9, и логином, равным 'user', 'admin', 'ivan' и зарплатой больше 300
Ответ на картинке.
❓Выберите из таблицы workers записи с id равным 1, 2, 3, 7, 9, и логином, равным 'user', 'admin', 'ivan' и зарплатой больше 300
Ответ на картинке.
👍10
#Вопросы_с_собеседования
❓В чем разница между командами Delete, Truncate и Drop?
• Команда Delete — это команда DML , он используется для удаления строк из таблицы. Его можно откатить.
• Truncate — это команда DDL, она используется для удаления всех строк из таблицы и освобождения пространства, содержащего таблицу. Ее нельзя откатить.
• Drop — это команда DDL, она удаляет все данные вместе со структурой таблицы (в отличие от команды truncate, которая удаляет только строки). Все строки, индексы и привилегии таблиц также будут удалены.
❓В чем разница между командами Delete, Truncate и Drop?
• Команда Delete — это команда DML , он используется для удаления строк из таблицы. Его можно откатить.
• Truncate — это команда DDL, она используется для удаления всех строк из таблицы и освобождения пространства, содержащего таблицу. Ее нельзя откатить.
• Drop — это команда DDL, она удаляет все данные вместе со структурой таблицы (в отличие от команды truncate, которая удаляет только строки). Все строки, индексы и привилегии таблиц также будут удалены.
👍14
Какая ошибка в этом запросе?
UPDATE books SET sales_1999 >
(SELECT SUM(qty * price)
FROM sales
WHERE sales.book_id = bооks.id
AND salеs.date BETWEEN '01/01/1999' AND '12/31/1999')
Вы не можете использовать арифметические операторы для функции SUM() (например SUM(qty * price))
Ответ
Следует использовать знак (=) для подзапроса
UPDATE books SET sales_1999 >
(SELECT SUM(qty * price)
FROM sales
WHERE sales.book_id = bооks.id
AND salеs.date BETWEEN '01/01/1999' AND '12/31/1999')
Вы не можете использовать арифметические операторы для функции SUM() (например SUM(qty * price))
Ответ
👍5🔥2❤1
#Вопросы_с_собеседования
❓Выберите из таблицы workers все записи за следующие дни любого месяца: 1, 7, 11, 12, 15, 19, 21, 29
Ответ на картинке.
❓Выберите из таблицы workers все записи за следующие дни любого месяца: 1, 7, 11, 12, 15, 19, 21, 29
Ответ на картинке.
👍8❤1
Что по умолчанию имеет более высокий приоритет! или NOT?
Anonymous Quiz
31%
!
30%
NOT
27%
Оба имеют одинаковый приоритет
13%
Узнать ответ
👍8😱4❤1
В чем разница между функциями RANK() и DENSE_RANK()?
Единственная разница между функциями RANK() и DENSE_RANK() заключается в случаях, когда несколько значений в наборе имеют одинаковый ранг.
В таких случаях RANK() будет назначать непоследовательные «ранги» значениям в наборе.
Тогда как DENSE_RANK() будет назначать последовательные ранги значениям в наборе.
Например, рассмотрим набор
{25, 25, 50, 75, 75, 100}.
Для такого набора RANK() вернет
{1, 1, 3, 4, 4, 6} (обратите внимание, что значения 2 и 5 пропущены), тогда как DENSE_RANK() вернет
{1, 1, 2, 3, 3, 4}.
Единственная разница между функциями RANK() и DENSE_RANK() заключается в случаях, когда несколько значений в наборе имеют одинаковый ранг.
В таких случаях RANK() будет назначать непоследовательные «ранги» значениям в наборе.
Тогда как DENSE_RANK() будет назначать последовательные ранги значениям в наборе.
Например, рассмотрим набор
{25, 25, 50, 75, 75, 100}.
Для такого набора RANK() вернет
{1, 1, 3, 4, 4, 6} (обратите внимание, что значения 2 и 5 пропущены), тогда как DENSE_RANK() вернет
{1, 1, 2, 3, 3, 4}.
👍8
select * from R, S в SQL эквивалентно...
Anonymous Quiz
8%
select * from R natural join S
25%
select * from R cross join S
25%
select * from R union join S
28%
select * from R inner join S
13%
Посмотреть ответ
👍8❤1
Количество вхождений строки в поле в MySQL
Есть таблица
Напишите MySQL запрос, который подсчитает количество вхождений значения ‘
Ожидаемый результат:
Решение:
Есть таблица
items со следующими данными:id desc
1 val test test val
2 val test
3 test test test
4 valvalvalvalval
Напишите MySQL запрос, который подсчитает количество вхождений значения ‘
val‘ для каждого desc. Ожидаемый результат:
2
1
0
5Решение:
SELECT
ROUND (
(LENGTH (desc) - LENGTH (
REPLACE (desc, ‘val‘,‘‘)
)) / LENGTH(‘val‘)) AS c
FROM items;👍11
Что вы знаете о функции STUFF(Transact-SQL)?
Функция STUFF вставляет одну строку в другую, начиная с указанной позиции. При этом в исходной строке, начиная с указанной позиции, удаляются символы в количестве, определенном в параметре Length.
Другими словами STUFF вставляет одну строку в другую. Она удаляет указанное количество символов первой строки в начальной позиции и вставляет на их место вторую строку.
Синтаксис:
STUFF(String1, Position, Length, String2)
Пример:
Результат:
Функция STUFF вставляет одну строку в другую, начиная с указанной позиции. При этом в исходной строке, начиная с указанной позиции, удаляются символы в количестве, определенном в параметре Length.
Другими словами STUFF вставляет одну строку в другую. Она удаляет указанное количество символов первой строки в начальной позиции и вставляет на их место вторую строку.
Синтаксис:
STUFF(String1, Position, Length, String2)
Здесь String1 — это строка, которая будет перезаписана. Position определяет стартовую позицию для перезаписи строки. Length — это длина подстроки, которая будет удалена из исходной строки. String2 — это строка, которая будет вставлена в String1.Пример:
SELECT STUFF(‘SQL Tutorial’,1,3,’Python’)
В результате работы функции «SQL Tutorial» превратится в «Python Tutorial».Результат:
Python Tutorial👍4
Отличаются ли в SQL операторы AND и &(амперсанд) ?
Anonymous Quiz
33%
Оператор & не поддерживается стандартом SQL
26%
AND имеет более низкий приоритет по сравнению с &
10%
Между ними нет отличий
17%
Приоритет AND выше, чем приоритет &
13%
Посмотреть ответы
👍10