Качай мускулы Степан Ильин aka Step Хакер, номер #075, стр. 075-028-5 SELECT FirstName,LastName FROM customers ORDER BY LastName Расширь и углуби! С уверенностью можно сказать, что любой компьютерный язык, в том числе и SQL, имеет не только определенный набор команд, но еще и некоторый арсенал функций. В SQL’е условно выделяют два вида функций: агрегатные (работают с наборами данных, но возвращают единственное значение) и скалярные (оперируют с единственным аргументом и возвращают результат его обработки). Вторая категория очень сильно зависит от конкретной БД-платформы, поэтому скалярные функции мы рассматривать не будем. Что же касается агрегатных функций, то я просто не могу о них не упомянуть. Познакомлю тебя с одной из них – функцией SUM. Суть ее работы несложно понять из названия. Функция суммирует выбранные значения числового поля, указанного ей в качестве аргумента. SELECT SUM(Sum) FROM orders // Суммируются все значения столбца Sum, а получившееся число возвращается в виде результата запроса. SELECT SUM(Sum) FROM orders where Payment=’Check’ // В ответ на этот запрос возвращается общая стоимость заказов, оплаченных чеком. Если нужно просуммировать исключительно неповторяющиеся значения поля, то к вызову функции SUM необходимо добавить уже знакомую тебе команду DISTINCT. Запрос в таком случае приобретает следующий вид: SELECT SUM(DISTINCT Sum) FROM orders. Все остальные агрегатные функции работают по тому же самому принципу. Их название и выполняемое ими действие ты сможешь найти в соответствующей врезке. Однако нужно разобраться еще с одной тонкостью их использования. Посмотри на таблицу заказов и подумай, как можно составить запрос, который бы вывел финансовую статистику по различным методам оплаты. Сгоряча можно записать так: SELECT Payment,SUM(Sum) FROM orders. Загвоздка заключается в том, что при таком раскладе второй столбец таблицы будет полностью заполнен одним и тем же значением – суммой по всему полю Sum. Чтобы устранить подобные ограничения, разработчики SQL ввели специальную инструкцию GROUP BY. Ее общий синтаксис имеет довольно громоздкий вид: SELECT <имя поле>, SUM(<поле суммирования>) FROM <имя таблицы> GROUP BY <имя поля> Однако конкретный пример и результат запроса на скриншоте должны все расставить по местам: SELECT Payment,SUM(Sum) FROM orders GROUP BY Payment Братство таблиц Все мои предыдущие примеры в качестве источника данных использовали только одну таблицу. Однако это отнюдь не значит, что вместо одной нельзя использовать несколько. Напротив, в реальных ситуациях такая необходимость встречается сплошь и рядом, поэтому было бы неплохо ее разобрать. Первое, что нужно запомнить, — во время работы с несколькими таблицами обращение к определенному полю осуществляется следующим образом: <имя таблицы>.<имя поля>. Например с помощью customers.FirstName ты обратишься к полю FirstName таблицы customers. |