Use Aggregate Functions in F#

In this article you will see and learn about the aggregate functions in a Windows Forms application.

Introduction

In this article you will see and learn about the aggregate functions in a Windows Forms application.

Aggregate Functions

Aggregate functions perform calculations on a set of values and returns a single value for the specified column. Aggregate functions ignore null values. There are various types of aggregate functions such as the following.

  • Max( )
  • Min( )
  • Count( )
  • Sum( )
  • AVG( )
  • GetDate( )

Max ( )

The Max function returns the maximum value of the specified column name. It ignores null values.

syntax: Select max(columnname) from tablename

Min ( )

The Max function returns the minimum value of the specified column name. It ignores null values.

syntax: Select min(columnname) from tablename

Count ( )

The Count unction returns the number of rows available in a specified column name then returns the single value. It is also ignores null values.

syntax: Select count(columnname) from tablename

Sum ( )

The Sum function returns the value of the sum of the values in a specified column name and returns a single value. It ignores null values.

syntax: Select Sum(columnname) from tablename

AVG ( )

The AVG function returns the average of the values in a specified column name and returns a single value. It ignores null values.

syntax: Select Avg(columnname) from tablename

GetDate ( )

The Getdate function retruns the current system time and date.

syntax: Select getdate()

Use the following procedure to create the database and table in SQL Server:

Create Database Employee

use Employee

create table EmployeeSalary

(

EmpId int primary key,

EmpName varchar(max),

Salary money 

)

Use the following procedure to insert the duplicate values in the database table in SQL Server:

insert into EmployeeSalary values(101,'Pankaj',20000)

insert into EmployeeSalary values(102,'Nimit',15000)

insert into EmployeeSalary values(103,'Pravesh',16000)

insert into EmployeeSalary values(104,'Amit',12000)

insert into EmployeeSalary values(105,'Ravi',25000)

insert into EmployeeSalary values(106,'Ainul',30000)

Use the following procedure to execute the query for a database table in SQL Server:

select * from EmployeeSalary 

 

DatabaseOutput

 

Now  I will show you how to use aggregate functions in Windows Forms application. Let's use the following procedure.

Step 1:

Open Visual Studio then select "Create New Project" --> "F# Console Application".

CreateApplication

Step 2:

Now go the Solution Explorer on the right side of the application. Right-click on "References" and select "Add references".

SelectReferences

 

AddReferences

Step 3:

After selecting "Add References", in the framework template you need to select "System.Windows.Forms", "System.Drawing" and "System.Data" while holding down the Ctrl key and click on "Ok."

ImportNamespaces

Step 4:

Use the following code showing how to use aggregate functions in a Windows Forms application.

open System  

open System.Windows.Forms  

open System.Data  

open System.Data.SqlClient

open System.Drawing  

let aggfform=new Form(Text="Aggrigate Functions")

aggfform.BackColor<-Color.DarkGray

let ffont=new Font("Arial", 9.75F,FontStyle.Regular, GraphicsUnit.Point)    

let constring = @"Data Source=MCNDESKTOP34;Initial Catalog=Employee;User ID=sa; Password=mcn@123" 

let adap=new SqlDataAdapter("select * from EmployeeSalary",constring)

let dt=new DataTable()

adap.Fill(dt) |>ignore

let datagrid=new DataGridView(Top=20,Left=40,Width=440,Height=200)

datagrid.DataSource<-dt   

let maxbtn=new Button(Text="MAX SALARY",Top=240,Left=0,Width=100)

let minbtn=new Button(Text="MIN SALARY",Top=280,Left=0,Width=100)

let countbtn=new Button(Text="COUNT EMPLOYEES",Top=320,Left=0,Width=120)

let sumbtn=new Button(Text="SUM OF SALARIES",Top=360,Left=0,Width=120)

let avgbtn=new Button(Text="AVG OF SALARIES",Top=400,Left=0,Width=120)

let getdatebtn=new Button(Text="GETDATE",Top=440,Left=0,Width=100)

maxbtn.BackColor<-Color.Ivory

minbtn.BackColor<-Color.Ivory

countbtn.BackColor<-Color.Ivory

sumbtn.BackColor<-Color.Ivory

avgbtn.BackColor<-Color.Ivory

getdatebtn.BackColor<-Color.Ivory

aggfform.Controls.Add(datagrid)

let valuemax=new Label(Top=240,Left=140,Height=30,BorderStyle=BorderStyle.FixedSingle)  

let valuemin=new Label(Top=280,Left=140,Height=30,BorderStyle=BorderStyle.FixedSingle)  

let valuecount=new Label(Top=320,Left=140,Height=30,BorderStyle=BorderStyle.FixedSingle)  

let valuesum=new Label(Top=360,Left=140,Height=30,BorderStyle=BorderStyle.FixedSingle)  

let valueavg=new Label(Top=400,Left=140,Height=30,BorderStyle=BorderStyle.FixedSingle)  

let valuegetdate=new Label(Top=440,Left=140,Height=30,BorderStyle=BorderStyle.FixedSingle)  

aggfform.Controls.Add(valuemax)

aggfform.Controls.Add(valuemin)

aggfform.Controls.Add(valuecount)

aggfform.Controls.Add(valuesum)

aggfform.Controls.Add(valueavg)

aggfform.Controls.Add(valuegetdate)

aggfform.Controls.Add(maxbtn)

aggfform.Controls.Add(minbtn)

aggfform.Controls.Add(countbtn)

aggfform.Controls.Add(sumbtn)

aggfform.Controls.Add(avgbtn)

aggfform.Controls.Add(getdatebtn)

//MAX FUNCTION

maxbtn.Click.Add(fun _->

let con = new SqlConnection(constring)

con.Open()

let com = new SqlCommand("Select max(Salary) from EmployeeSalary",con)

com.Connection <- con

valuemax.Text<-com.ExecuteScalar().ToString()

)

//MIN FUCTION

minbtn.Click.Add(fun _->

let con = new SqlConnection(constring)

con.Open()

let com = new SqlCommand("Select min(Salary) from EmployeeSalary",con)

com.Connection <- con

valuemin.Text<-com.ExecuteScalar().ToString()

)

//COUNT FUNCTION

countbtn.Click.Add(fun _->

let con = new SqlConnection(constring)

con.Open()

let com = new SqlCommand("Select Count(Salary) from EmployeeSalary",con)

com.Connection <- con

valuecount.Text<-com.ExecuteScalar().ToString()

)

//SUM FUNCTION

sumbtn.Click.Add(fun _->

let con = new SqlConnection(constring)

con.Open()

let com = new SqlCommand("Select Sum(Salary) from EmployeeSalary",con)

com.Connection <- con

valuesum.Text<-com.ExecuteScalar().ToString()

)

//AVG FUNCTION

avgbtn.Click.Add(fun _->

let con = new SqlConnection(constring)

con.Open()

let com = new SqlCommand("Select avg(Salary) from EmployeeSalary",con)

com.Connection <- con

valueavg.Text<-com.ExecuteScalar().ToString()

)

//GETDATE FUNCTION

getdatebtn.Click.Add(fun _->

let con = new SqlConnection(constring)

con.Open()

let com = new SqlCommand("Select getdate()",con)

com.Connection <- con

valuegetdate.Text<-com.ExecuteScalar().ToString()

)

Application.Run(aggfform)

Step 5 :

Debug the application by pressing F5 to execute the Windows Forms application. After debuging the application the output will be as in the following figure:

AfterDebug

Step 6 :

Now click on the "Max Salary and Min Salary" button as in the following figure.

MAXMINVALUE

Step 7 :

Now click on "Count Employees and Sum of Salaries" button as in the following figure.

CountSumValue

Step 8 :

Now click on the "Avg  and Getdate" button as in the following figure.

AVGGetdateValue

Summary

This article has explained the aggregate functions and how to use aggregate functions in a Windows Forms application.