Грубер Мартин
Шрифт:
* Напишите запрос который бы выбирал заказчиков в алфавитном порядке, чьи имена начинаются с буквы G.
* Напишите запрос который выбрал бы высшую оценку в каждом городе.
* Напишите запрос который сосчитал бы число заказчиков регистрирующих каждый день свои порядки. (Если продавец имел более одного порядка в данный день, он должен учитываться только один раз.)
Глава 7. ФОРМИРОВАНИЕ ВЫВОДОВ ЗАПРОСОВ
ЭТА ГЛАВА РАСШИРИТ ВАШИ ВОЗМОЖНОСТИ в работе с выводом который производит запрос. Вы узнаете как вставлять текст и константы между выбранных полей, как использовать выбранные поля в математических выражениях, чьи результаты затем становятся выводом, и как сделать чтобы ваши значения выводились в определенном порядке. Эта последняя особенность включена, чтобы упорядочивать ваш вывод по любым столбцам, любым полученным значениям этого столбца, или по обеим.
Большинство основанных на SQL баз данных предоставляют специальные средства позволяющие Вам совершенствовать вывод ваших запросов. Конечно, они претерпевают значительные изменения от программы к программе, и их обсуждение здесь не входит в наши задачи, однако, имеются пять особенностей созданых в стандарте SQL которые позволяют вам делать больше чем просто вывод значений полей и агрегатных данных.
Предположим что вы хотите выполнять простые числовые вычисления данных чтобы затем помещать их в форму больше соответствующую вашим потребностям. SQL позволяет вам помещать скалярные выражения и константы среди выбраных полей. Эти выражения могут дополнять или замещать поля в предложениях SELECT, и могут включать в себя одно или более выбранных полей. Например, вы можете пожелать, представить комиссионные вашего продавца в процентном отношении а не как десятичные числа. Просто достаточно:
SELECT snum, sname, city, comm * 100
FROM Salespeople;
Вывод из этого запроса показывается в Таблице 7.1.
Последний столбец предшествующего примера непомечен( т.е. без наименования), потому что это - столбец вывода. Столбцы вывода - это столбцы данных созданные запросом способом, иным чем просто извлечение их из таблицы. Вы создаете их всякий раз, когда вы используете агрегатные
SELECT snum, sname, city, comm * 100 FROM Salespeople;
snum | sname | city | |
1001 | Peel | London | 12.000000 |
1002 | Serres | San Jose | 13.000000 |
1004 | Motika | London | 11.000000 |
1007 | Rifkin | Barcelona | 15.000000 |
1003 | Axelrod | New York | 10.000000 |
Таблица 7.1: Помещение выражения в вашем запросе функции, константы, или выражения в предложении SELECT запроса. Так как имя столбца - один из атрибутов таблицы, столбцы которые приходят не из таблиц не имеют никаких имен. Другими словами непомеченные, столбцы вывода могут обрабатываться также как и столбцы извлеченные из таблиц, почти во всех ситуациях.
Символ 'A', когда ничего не значит сам по себе, - является констан той, такой например как число 1. Вы можете вставлять константы в предложение SELECT запроса, включая и текст. Однако символьные константы, в отличие от числовых констант, не могут использоваться в выражениях.
Вы можете иметь выражение 1 + 2 в вашем предложении SELECT, но вы не можете использовать выражение типа 'A' + 'B'; это приемлемо только если мы имеем в виду что 'A' и 'B' это просто буквы, а не переменные и не символы.
Тем ни менее, возможность вставлять текст в вывод ваших запросов очень удобная штука.
Вы можете усовершенствовать предыдущий пример представив комиссионные как проценты со знаком процента (%). Это даст вам возможность помещать в вывод такие единицы как символы и комментарии, как например в следующем примере (вывод показывается в Таблице 7.2 )
SELECT snum, sname, city, ' % ', comm * 100
FROM Salespeople;
SELECT snum, sname, city, '%' comm * 100
FROM Salespeople;
snum | sname | city | ||
1001 | Peel | London | % | 12.000000 |
1002 | Serres | San Jose | % | 13.000000 |
1004 | Motika | London | % | 11.000000 |
1007 | Rifkin | Barcelona | % | 15.000000 |
1003 | Axelrod | New York | % | 10.000000 |