Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Агрегирующие функции языка SQL



При статистическом анализе баз данных необходимо получать такую информацию, как общее количество записей, наибольшее и наименьшее значения заданного поля записи, усредненное значение поля и т. д. Данная задача выполняется с помощью запросов, содержащих так называемые агрегирующие функции.

Агрегирующие функции производят вычисление одного «собирающего» значения (суммы, среднего, максимального, минимального значения и т. п.) для заданных групп строк таблицы. Группы строк определяются различными значениями заданного поля (полей) таблицы. Разбиение на группы выполняется с помощью предложения group by.

 

Рассмотрим перечень агрегирующих функций.

- count определяет количество записей данного поля в группе строк.

- sum вычисляет арифметическую сумму всех выбранных значений данного поля.

- avg рассчитывает арифметическое среднее (усреднение) всех выбранных значений данного поля.

- max находит наибольшее из всех выбранных значений данного поля.

- min находит наименьшее из всех выбранных значений данного поля.

Для определения общего числа записей в таблице Туристы используем запрос

select count (*) from Туристы;

Отметим, что результатом запроса является одно число, содержащееся в поле с отсутствующим именем.

А если мы захотим посчитать однофамильцев (то есть разбить набор записей-результатов запроса на группы с одинаковыми фамилиями), то запрос будет выглядеть так:

select Фамилия, count (Фамилия) from Туристы group by Фамилия;

Структура таблицы Туры:

Синтаксис использования других операторов одинаков - следующие запросы извлекают сумму, арифметическое среднее, наибольшее и наименьшее значения поля «Цена» таблицы «Туры» (здесь заданной группой записей, как и в первом примере с функцией count, являются все записи таблицы).

select sum(Цена) from Туры
select avg(Цена) from Туры
select max(Цена) from Туры
select min(Цена) 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; Просмотров: 403; Нарушение авторского права страницы


lektsia.com 2007 - 2017 год. Все права принадлежат их авторам! (0.011 с.) Главная | Обратная связь