КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
И еще несколько примеров
Объединение запросов Для объединения результатов двух и более запросов нужно использовать ключевое слово UNION. Объединяемые запросы должны иметь одинаковое количество и тип полей. Параметр ORDER BY можно указывать только в последнем запросе. Получить список договоров и общую сумму счетов по каждому договору, а также строку с итоговой суммой: SELECT 'Договор № '+CONVERT(CHAR(6),contract_num)+ 'на сумму ' AS "Номер", SUM(bill_sum) AS "Сумма" FROM k_bill GROUP BY contract_num UNION SELECT 'ИТОГО: ', SUM(bill_sum) FROM k_bill ORDER BY 1 Результат: Номер Сумма ------------------------- ------------ Договор № 1 на сумму 5000 Договор № 2 на сумму 8000 Договор № 3 на сумму 2500 Договор № 4 на сумму 1500 Договор № 5 на сумму 11200 ИТОГО: 28200
(6 row(s) affected) Прайс-лист с суммой заказов по каждому товару. Обратите внимание, что название и цена товара указываются в списке полей для группировки только для того, чтобы их можно было использовать в списке полей выборки. Для группировки здесь достаточно номера товара, так как он уникальный. SELECT pr.price_name, pr.price_sum, SUM(prot.kolvo*prot.price_sum) FROM k_price pr, k_protokol prot WHERE pr.price_num=prot.price_num GROUP BY pr.price_num, pr.price_name, pr.price_sum
Результат: price_name price_sum ------------------------------------------------------- Материализация духов 1000.00 7000.00 Раздача слонов 100.00 3700.00 Слоновий бивень 3000.00 6000.00 Моржовый клык 1500.00 1500.00 Копыто Пегаса 5000.00 10000.00
(5 row(s) affected)
Полностью оплаченные счета: SELECT b.bill_num AS "Номер счета", b.bill_date AS "Дата счета", b.bill_sum AS "Сумма счета", SUM(p.payment_sum) AS "Сумма оплаты" FROM k_bill b, k_payment p WHERE b.bill_num=p.bill_num AND b.bill_sum<= (SELECT SUM(payment_sum) FROM k_payment p2 WHERE b.bill_num=p2.bill_num) GROUP BY b.bill_num, b.bill_date, b.bill_sum
Результат: Номер счета Дата счета Сумма счета Сумма оплаты ----------------------------------------------------------- 1 2006-01-02 16:46:10.800 1000 1000.00 3 2006-03-03 16:46:10.810 2000 2000.00 7 2006-02-01 16:46:10.810 1500 1500.00 (3 row(s) affected)
Полностью неоплаченные счета SELECT b.bill_num AS "Номер счета", b.bill_date AS "Дата счета", b.bill_sum AS "Сумма счета", 0 AS "Сумма оплаты" FROM k_bill b WHERE b.bill_num NOT IN (SELECT bill_num FROM k_payment)
Результат: Номер счета Дата счета Сумма счета Сумма оплаты ----------------------------------------------------------- 5 2006-03-03 16:46:10.810 2000 0 6 2006-03-03 16:46:10.810 2500 0 9 2006-03-03 16:46:10.810 10000 0
(3 row(s) affected) Частично оплаченные счета – обратите внимание, что в этом примере в параметре FROM вместо второй таблицы используется вложенный SELECT SELECT b.bill_num AS "Номер счета", b.bill_date AS "Дата счета", b.bill_sum AS "Сумма счета", p.pay_sum AS "Сумма оплаты" FROM k_bill b, (SELECT bill_num, SUM(payment_sum) as pay_sum FROM k_payment GROUP BY bill_num) p WHERE b.bill_sum >p.pay_sum AND b.bill_num=p.bill_num
Результат: Номер счета Дата счета Сумма счета Сумма оплаты ----------------------------------------------------------- 2 2006-02-01 16:46:10.810 2000 1000.00 4 2006-02-01 16:46:10.810 6000 1000.00 8 2006-02-01 16:46:10.810 1200 1000.00
(3 row(s) affected)
Вопрос Какие функции есть в языке SQL server? Изучите самостоятельно по Books Online или другим источникам.
Задание для индивидуальной работы 6 Напишите несколько (не менее 5) интересных запросов к вашей базе данных. Используйте вложенные подзапросы, группировки, итоговые значения, выборки из нескольких таблиц. Если ваш запрос требует ввода параметра, замените его пока на константу, запросы с параметрами можно будет в дальнейшем реализовать с помощью хранимых процедур.
Дата добавления: 2015-05-09; Просмотров: 406; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |