Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Агрегирующие функции языка SQL
При статистическом анализе баз данных необходимо получать такую информацию, как общее количество записей, наибольшее и наименьшее значения заданного поля записи, усредненное значение поля и т. д. Данная задача выполняется с помощью запросов, содержащих так называемые агрегирующие функции. Агрегирующие функции производят вычисление одного «собирающего» значения (суммы, среднего, максимального, минимального значения и т. п.) для заданных групп строк таблицы. Группы строк определяются различными значениями заданного поля (полей) таблицы. Разбиение на группы выполняется с помощью предложения group by.
Рассмотрим перечень агрегирующих функций. - count определяет количество записей данного поля в группе строк. - sum вычисляет арифметическую сумму всех выбранных значений данного поля. - avg рассчитывает арифметическое среднее (усреднение) всех выбранных значений данного поля. - max находит наибольшее из всех выбранных значений данного поля. - min находит наименьшее из всех выбранных значений данного поля. Для определения общего числа записей в таблице Туристы используем запрос select count (*) from Туристы; Отметим, что результатом запроса является одно число, содержащееся в поле с отсутствующим именем. А если мы захотим посчитать однофамильцев (то есть разбить набор записей-результатов запроса на группы с одинаковыми фамилиями), то запрос будет выглядеть так: select Фамилия, count (Фамилия) from Туристы group by Фамилия; Структура таблицы Туры: Синтаксис использования других операторов одинаков - следующие запросы извлекают сумму, арифметическое среднее, наибольшее и наименьшее значения поля «Цена» таблицы «Туры» (здесь заданной группой записей, как и в первом примере с функцией count, являются все записи таблицы). select sum(Цена) from Туры Если значение поля может быть незаполненным, то для обращения к таким полям необходимо использовать оператор null. Отметим, что величина null не означает, что в поле стоит число 0 (нуль) или пустая текстовая строка. Существует два способа образования таких значений: 1) Microsoft SQL Server автоматически подставляет значение null, если в значение поля не было введено никаких значений и тип данных для этого поля не препятствует присвоению значения null; 2) или если пользователь явным образом вводит значение null. Пример Создадим приложение для работы с таблицей osn. Необходимо подсчитать сумму по столбцу zarpl. Сделаем это двумя способами: 1. Перебор всех записей таблицы; 2. Создание запроса. Структура таблицы:
Разместим на форме элементы:
1. Перебор записей осуществляется при нажатии на кнопку Сумма zarpl. Для лучшей компоновки данных на экране в dataGridView1 удален столбец datavv. Поэтому номер столбца zarpl равен трем.
2. Разместим на форме dataGridView2 для отображения запроса на сумму по столбцу zarpl. Построение запроса описано в практической работе «11 Группировка».
Поле для суммирования значений имеет имя Expr1. Выделить набор данных bd01DataSet.xsd, открыть конструктор. Щелкнуть правой кнопкой на заголовке DataTable1, ввести выражение для суммирования значений. Подключить к dataGridView2.dataTable1TableAdapter.
Щелкнуть правой кнопкой на dataGridView2 Выбрать Правка столбцов. После этого переименовать в dataGridView2 поле Expr1. В поле HeaderText ввести Сумма zarpl.
Текст программы using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;
namespace _012 { public partial class Form1: Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // TODO: данная строка кода позволяет загрузить данные в таблицу " bd01DataSet.DataTable1". При необходимости она может быть перемещена или удалена. this.dataTable1TableAdapter.Fill(this.bd01DataSet.DataTable1); // TODO: данная строка кода позволяет загрузить данные в таблицу " bd01DataSet.osn". При необходимости она может быть перемещена или удалена. this.osnTableAdapter.Fill(this.bd01DataSet.osn); // TODO: данная строка кода позволяет загрузить данные в таблицу " bd01DataSet.osn". При необходимости она может быть перемещена или удалена. this.osnTableAdapter.Fill(this.bd01DataSet.osn); dataGridView2.Visible = false; //запрос становится видимым при нажатии на кнопку } private void button1_Click(object sender, EventArgs e) { //удален столбец datavv int i; decimal summ1; summ1 = 0; //возвращает число записей в базе на 1 больше for (i = 0; i < dataGridView1.Rows.Count - 1; i++) summ1 += (decimal)dataGridView1.Rows[i].Cells[3].Value; //работает //summ1 += (decimal)dataGridView1.Rows[i].Cells[" zarpl" ].Value; не работает zarpl label2.Text = Convert.ToString(summ1); } private void button2_Click(object sender, EventArgs e) { dataGridView2.Visible = true; } } }
Вид работающего приложения:
Задание
Создать приложение для демонстрации подсчета значений данных в Visual Studio 2012 C# согласно своему варианту задания. Протестировать приложение.
Рассмотреть подсчет средних значений, выбор максимального и минимального значений для подходящих полей таблицы.
Рассмотреть возможность подсчета значений данных в более универсальном виде, например, организовать выбор поля для суммирования из ComboBox, в котором записаны названия полей таблицы. Заполнение ComboBox отражено в практической работе «08 Сортировка».
Практическая работа №13 Поиск данных в таблице БД в Visual Studio 2012 C# 1. Цель работы: Изучить возможности поиска данных в таблице БД вVisual Studio 2012 C#. Создать приложение для демонстрации поиска данных в таблице БД.
Популярное:
|
Последнее изменение этой страницы: 2016-03-15; Просмотров: 3173; Нарушение авторского права страницы