Запрос MS SQL Server. Примеры SELECT: 21-30

Печать

Примеры запросов SQL могут использованы для изучения и практикума написания запросов в MS SQL Server.

Examples of SQL queries can be used to study and practice writing queries in MS SQL Server.

Запрос Q021. Следующий запрос SQL вычисляет на какую сумму было продано товаров, имеющих код 4 или 6:

Query Q021. The following SQL query calculates how much you have sold for products that have code 4 or 6:

SELECT Sum(amount*price) as outcome_sum
FROM m_outcome
WHERE product_id=4 OR product_id=6;

Запрос Q022. Вычисляется на какую сумму было продано 12 июня 2011 года товаров, имеющих код 4 или 6:

Query Q022. Calculates how much was sold on June 12, 2011 of goods with id 4 or 6:

SELECT Sum(amount*price) AS outcome_sum
FROM m_outcome
WHERE (product_id=4 OR product_id=6) AND dt='2011-06-12';

Запрос Q023. Задача такова. Вычислить на какую общую сумму было оприходовано товаров категории "Хлебобулочные изделия".

Для решения этой задачи нужно оперировать тремя таблицами: m_income, m_product и m_category, потому что:
- количество и цена оприходованных товаров хранятся в таблице m_income;
- код категории каждого товара хранится в таблице m_product;
- название категории title хранится в таблице m_category.

Для решения данной задачи воспользуемся следующим алгоритмом:
- определение кода категории "Хлебобулочные изделия" из таблицы m_category посредством подзапроса;
- соединение таблиц m_income и m_product для определения категории каждого оприходованного товара;
- вычисление суммы прихода( = количество*цена) для товаров, код категории которых равен коду, определенному вышеуказанным подзапросом.

Итак:

Query Q023. The task is as follows. Calculate how much the total amount was credited to the goods category "Bakery" ("Хлебобулочные изделия")

To solve this problem, you need to operate with three tables: m_income, m_product and m_category, because:
- the quantity and price of the goods posted are stored in the m_income table;
- the category code of each product is stored in the m_product table;
- the title category name is stored in the m_category table.

To solve this problem, we use the following algorithm:
- the definition of the category code "Bakery products" from the table m_category by means of a subquery;
- joining the m_income and m_product tables to determine the category of each goods received;
- calculation of the amount of the arrival (= quantity * price) for goods, the category code of which is equal to the code defined by the above subquery.

So:

SELECT Sum(amount*price) AS income_sum
FROM m_product AS a INNER JOIN m_income AS b ON a.id=b.product_id
WHERE ctgry_id = (SELECT id FROM m_category WHERE title='Хлебобулочные изделия');

Запрос Q024. Задачу вычисления общей суммы оприходованных товаров категории "Хлебобулочные изделия" решим следующим алгоритмом:
- каждой записи таблицы m_income, в зависимости от значения его product_id, из таблицы m_category, сопоставить название категории;
- выделить записи, для которых категория равна "Хлебобулочные изделия";
- вычислить сумму прихода = количество*цена.

Итак:

Query Q024. The task of calculating the total amount of the accrued goods of the category "Bakery products" is solved by the following algorithm:
- each record of the m_income table, depending on the value of its product_id, from the m_category table, Name of the category;
- select records for which the category is equal to "Bakery products" ("Хлебобулочные изделия");
- calculate the amount of the parish = quantity * price.

So:

SELECT Sum(amount*price) AS income_sum
FROM (m_product AS a INNER JOIN m_income AS b ON a.id=b.product_id)
INNER JOIN m_category AS c ON a.ctgry_id=c.id
WHERE c.title='Хлебобулочные изделия';

Запрос Q025. В этом примере вычисляется сколько наименований товаров было израсходовано:

Query Q025. This example calculates how many items have been spent:

SELECT COUNT(product_id) AS product_cnt
FROM (SELECT DISTINCT product_id FROM m_outcome) AS t;

Запрос Q026. Инструкция GROUP BY используется для группировки записей. Обычно записи группируются по значению одного или нескольких полей, и относительно каждой группы применяется какая-либо агрегатная операция. Например, следующий запрос состявляет отчет о продаже товаров. То есть генерируется таблица, в которой будут названия товаров и сумма, на которую они проданы:

Query Q026. The GROUP BY clause is used to group records. Usually, records are grouped by the value of one or more fields, and an aggregate operation is applied to each group. For example, the following query collects a report on the sale of goods. That is, a table is generated in which there will be the names of the goods and the amount they are sold to:

SELECT title, SUM(amount*price) AS outcome_sum
FROM m_product AS a INNER JOIN m_outcome AS b
ON a.id=b.product_id
GROUP BY title;

Запрос Q027. Отчет о продажах по категориям. То есть генерируется таблица, в которой будут названия категорий товаров, общая сумма, на которую проданы товары данных категорий, и средняя сумма продаж. Функция ROUND использована для округления среднего значения до сотой доли (второй знак после разделителя целой и дробной частей):

Query Q027. Report on sales by category. That is, a table is generated in which there will be the names of the categories of goods, the total amount for which the goods of these categories are sold, and the average amount of sales. The ROUND function is used to round off the average value to the hundredth part (the second digit after the integer and fractional part separator):

SELECT c.title, SUM(amount*price) AS outcome_sum, 
ROUND(AVG(amount*price),2) AS outcome_sum_avg
FROM m_product AS a 
INNER JOIN m_outcome AS b 
ON a.id=b.product_id 
INNER JOIN m_category AS c 
ON a.ctgry_id=c.id
GROUP BY c.title;

Запрос Q028. Вычисляется для каждого товара общее и среднее количество его поступлений и выводит информацию о товарах, общее количество поступления которых не менее 500:

Query Q028. Calculates the total and average number of receipts for each product and displays information about products with a total receipt of at least 500:

SELECT product_id, SUM(amount) AS amount_sum, 
Round(Avg(amount),2) AS amount_avg
FROM m_income
GROUP BY product_id
HAVING Sum(amount)>=500;

Запрос Q029. В этом запросе вычисляется для каждого товара сумма и среднее значение его поступлений, осуществленных во втором квартале 2011 года. Если общая сумма прихода товара не менее 1000, то отображается информация об этом товаре:

Query Q029. In this query, the amount and average value of its revenues for the second quarter of 2011 are calculated for each product. If the total amount of goods arrival is not less than 1000, then the information about this product is displayed:

SELECT title, SUM(amount*price) AS income_sum
FROM m_income a INNER JOIN m_product b ON a.product_id=b.id
WHERE dt BETWEEN '2011-04-01' AND '2011-06-30'
GROUP BY title
HAVING SUM(amount*price)>=1000;

Запрос Q030. В некоторых случаях нужно сопоставлять каждой записи некоторой таблицы каждую запись другой таблицы; что называется декартовым произведением. Таблица, образующаяся в результате такого соединения, называется таблицей Декарта. Например, если некоторая таблица А имеет 100 записей и таблица В имеет 15 записей, то их таблица Декарта будет состоять из 100*15=150 записей. Следующий запрос соединяет каждую запись таблицы m_income с каждой записью таблицы m_outcome:

Query Q030. In some cases, you need to map each record of a table to each entry in another table; Which is called the Cartesian product. The table formed as a result of such a connection is called the Descartes table. For example, if some table A has 100 records and table B has 15 entries, then their Descartes table will consist of 100 * 15 = 150 records. The following query connects each record of the m_income table with each record of the m_outcome table:

SELECT *
FROM m_income, m_outcome;

Добавить комментарий


Защитный код
Обновить

Произведение «OFTOB.COM» публикуется на условиях лицензии Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Непортированная.