Студопедия

КАТЕГОРИИ:


Архитектура-(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; Просмотров: 389; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.