Изучаем sql



Pdf көрінісі
бет200/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   196   197   198   199   200   201   202   203   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )


Глава 11. Условная логика
17 WHERE account.account_id =
18 (SELECT t.account_id
19 FROM transaction t
20 WHERE t.txn_id = 999);
Здесь всего три выражения 
case
: два из них (строки 5 и 13) служат для
изменения знака суммы транзакции для дебетовых транзакций,
а третье выражение 
case
(строка 10) предназначено для проверки даты
доступности фондов. Если эта дата еще не наступила, к доступному ос
татку добавляется нуль; в противном случае добавляется сумма тран
закции.
Обработка значений Null
Хотя значения 
null
удобны для хранения в таблицах неизвестных зна
чений столбцов, они не всегда подходят для отображения или исполь
зования в выражениях. Например, в окне ввода данных вы, скорее
всего, предпочтете отображать слово «unknown», а не оставлять пустое
поле. При извлечении данных выражение 
case
позволяет вместо значе
ния 
null
подставлять строку:
SELECT emp_id, fname, lname,
CASE
WHEN title IS NULL THEN 'Unknown'
ELSE title
END
FROM employee;
Значения 
null
в вычислениях часто являются причиной результата
null
, как показывает следующий пример:
mysql> 
SELECT (7 * 5) / ((3 + 14) * null);
++
| (7 * 5) / ((3 + 14) * null) |
++
| NULL |
++
1 row in set (0.08 sec)
Проводя вычисления, полезно преобразовать значения 
null
в число
(обычно 0 или 1) с помощью выражения 
case
, чтобы обеспечить резуль
тат вычисления, отличный от 
null
. Например, при вычислении с учас
тием столбца 
account.avail_balance
можно было бы подставить 0 (при
сложении или вычитании) или 1 (при умножении или делении) для тех
счетов, которые уже открыты, но средства на них еще не помещены:
SELECT +
CASE
WHEN avail_balance IS NULL THEN 0
ELSE avail_balance
END
+
...


Упражнения
229
Если числовой столбец может содержать значения 
null
, хорошо бы ис
пользовать условную логику при любых вычислениях с участием это
го столбца, чтобы гарантировать значимые результаты.
Упражнения
Проверьте свою способность применять условную логику с помощью
следующих примеров. Выполнив задание, сравните свои решения с от
ветами, приведенными в приложении С.
11.1
Перепишите следующий запрос, использующий простое выражение
case
, таким образом, чтобы получить аналогичные результаты с помо
щью выражения 
case
с перебором вариантов. Попытайтесь свести
к минимуму количество блоков 
when
.
SELECT emp_id,
CASE title
WHEN 'President' THEN 'Management'
WHEN 'Vice President' THEN 'Management'
WHEN 'Treasurer' THEN 'Management'
WHEN 'Loan Manager' THEN 'Management'
WHEN 'Operations Manager' THEN 'Operations'
WHEN 'Head Teller' THEN 'Operations'
WHEN 'Teller' THEN 'Operations'
ELSE 'Unknown'
END
FROM employee;
11.2
Перепишите следующий запрос так, чтобы результирующий набор со
держал всего одну строку и четыре столбца (по одному для каждого от
деления). Назовите столбцы 
branch_1

branch_2
и т. д.
mysql> 


Достарыңызбен бөлісу:
1   ...   196   197   198   199   200   201   202   203   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет