--Derived tables Use CommunityAssist Select Personkey, [Last], [First], City from (Select p.Personkey, PersonLastName [Last], PersonFirstName [First], City From Person p inner Join PersonAddress pa on p.PersonKey=pa.personKey where city = 'Bellevue') as BellevueResidents Select RequestMonth, ServiceName, Count(ServiceName) as [Count] From (Select month(GrantDate) RequestMonth, ServiceName From ServiceGrant sg inner join CommunityService cs on sg.ServiceKey=cs.ServiceKey) as ServiceCount Group by RequestMonth, ServiceName --Common Table Expressions with BellevueResidents as ( Select p.Personkey, PersonLastName [Last], PersonFirstName [First], City From Person p inner Join PersonAddress pa on p.PersonKey=pa.personKey where city = 'Bellevue' ) Select [Last], [First], City From BellevueResidents with ServiceCount as ( (Select month(GrantDate) RequestMonth, ServiceName From ServiceGrant sg inner join CommunityService cs on sg.ServiceKey=cs.ServiceKey) ) Select RequestMonth, ServiceName, Count(ServiceName) as [Count] From ServiceCount Group by RequestMonth, ServiceName Declare @EmployeeKey int; Set @EmployeeKey=4; with EmployeeServiceGrants as ( Select Month(GrantDate) as [Month], GrantKey From ServiceGrant Where EmployeeKey=@EmployeeKey ) Select [Month], Count(GrantKey) as Total From EmployeeServiceGrants Group by [Month];
Thursday, January 28, 2016
Table Expressions Part 1
Wednesday, January 27, 2016
What to do with first Service Assignment
1. New Empty Site:
2. ADo Entities: connects to database
Artist
Venue
Show
ShowDetail
save
3. wcf service: name it --IService.cs, Service.cs. Service.srv
4. Set up Interface
List
List
List
List
List
5. Build the service
Thursday, January 21, 2016
Subqueries
Use CommunityAssist --subqueries Select PersonLastName, GrantAllocation From Person p Inner join ServiceGrant sg on p.PersonKey=sg.PersonKey Where GrantAllocation= (Select Min(GrantAllocation) from serviceGrant) Select PersonLastName, PersonFirstName From Person where Personkey in (Select PersonKey from Employee) Select PersonLastName, PersonFirstName From Person where Personkey in (Select PersonKey from Employee where employeeKey in (Select EmployeeKey from ServiceGrant)) --The total and count GrantTotal granted and the percent --of the grants for each service Select ServiceName, Sum(GrantAllocation) as Total, (Select max(GrantAllocation) from ServiceGrant) as Biggest, (Select Sum(GrantAllocation) from ServiceGrant) GrandTotal From ServiceGrant sg Inner join CommunityService cs on sg.ServiceKey=cs.ServiceKey Group by ServiceName Select ServiceName,count(GrantAllocation) as number, Sum(GrantAllocation) as Total, (Select max(GrantAllocation) from ServiceGrant) as Biggest, (Select Sum(GrantAllocation) from ServiceGrant) GrandTotal, format(Sum(GrantAllocation) / (Select Sum(GrantAllocation) from ServiceGrant), '###.##%') [Percent] From ServiceGrant sg Inner join CommunityService cs on sg.ServiceKey=cs.ServiceKey Group by ServiceName Select ServiceName, Max(GrantAllocation) as largest From CommunityService cs Inner Join ServiceGrant sg on cs.ServiceKey =sg.ServiceKey Group by ServiceName Select ServiceKey, avg(GrantAllocation) From ServiceGrant Group by ServiceKey Select ServiceKey, GrantAllocation From ServiceGrant sg1 Where GrantAllocation > (Select Avg(GrantAllocation) From ServiceGrant sg2 Where sg1.ServiceKey=sg2.ServiceKey) Select Avg(GrantAllocation) from ServiceGrant Where ServiceKey =2
Wednesday, January 20, 2016
Normalization
Tuesday, January 19, 2016
Joins
Select * From sys.Databases Use CommunityAssist Select name from sys.procedures --joins -- cross join Select PersonLastName, Street, City from Person, PersonAddress Select PersonLastName, Street, City from Person Cross Join PersonAddress --inner joins Select PersonLastName, ContactInfo, ContactType.ContactTypeKey, [ContactTypename] From Person, PersonContact, ContactType Where Person.PersonKey=PersonContact.Personkey And ContactType.ContactTypeKey=PersonContact.ContactTypeKey Select PersonLastName, ct.ContactTypeKey, ContactInfo, ContactTypeName From Person as p inner join PersonContact as pc On p.PersonKey=pc.PersonKey Inner join ContactType ct on pc.ContactTypeKey=ct.ContactTypeKey Select Distinct PersonLastname, donationDate, sum(DonationAmount) from Person p join PersonContact pc on p. PersonKey = pc.PersonKey join donation d on d.PersonKey=p.PersonKey Group by PersonLastname, donationDate --outer Joins Select Distinct ServiceName, sg.ServiceKey from CommunityService cs left outer join ServiceGrant sg on cs.serviceKey=sg.ServiceKey Where sg.ServiceKey is null Select Distinct ServiceName, sg.ServiceKey from CommunityService cs full outer join ServiceGrant sg on cs.serviceKey=sg.ServiceKey Where sg.ServiceKey is null Select Distinct PersonLastName, ContactInfo, ContactTypeName From Person p Inner Join PersonContact pc on p.PersonKey=pc.PersonKey right join ContactType ct On Ct.ContactTypeKey=pc.ContactTypeKey Where ContactInfo is null
Thursday, January 14, 2016
Selects 2
Use CommunityAssist; Select EmployeeKey, EmployeeMonthlySalary, EmployeeMonthlySalary * 12 as [Annual Salary] From Employee; Select Avg(EmployeeMonthlySalary) from Employee Where Not EmployeeMonthlySalary =0; Select Sum(EmployeeMonthlySalary) from Employee; Select Min(EmployeeMonthlySalary) from Employee; Select Max(EmployeeMonthlySalary) from Employee; Select Count(EmployeeMonthlySalary) from Employee; Select * From ServiceGrant; Select ServiceKey, sum(GrantAllocation) as Total from ServiceGrant Where ServiceKey > 2 Group by ServiceKey having sum(GrantAllocation) > 2500; Select ServiceKey, sum(GrantAllocation) as Total from ServiceGrant Group by ServiceKey having sum(GrantAllocation) > 2000 Order by total desc; Select Distinct Year(GrantDate) from ServiceGrant; Select Distinct Month(GrantDate) from ServiceGrant; Select Year(GrantDate) as Year, Month(GrantDate) as [Month], case Month(GrantDate) when 8 then 'August' when 9 then 'September' end as [word Month], Sum(GrantAllocation) as Total from ServiceGrant Group by Year(GrantDate), Month(GrantDate); Select Distinct DatePart(mm,GrantDate), Datepart(dd,GrantDate) from serviceGrant Select Distinct DatePart(hour, GrantDate) From ServiceGrant Where grantKey=2; Select GrantDate, GrantReviewDate, DateDiff(dd,GrantDate,GrantReviewDate) as [Processing Time] From ServiceGrant; Select DateDiff(minute,'1/14/2016','1/14/2020'); Select GetDate() as Today; Select DateAdd(dd, 365, GetDate()); Select * from Employee; Select EmployeeKey, EmployeeHireDate From Employee Where Year(EmployeeHireDate) between 2003 and 2008; --###-##-#### Select substring(EmployeeSSNumber,1,3) + '-' + substring(EmployeeSSNumber,4,2) + '-' + substring(EmployeeSSNumber,6,4) From Employee; Select format(cast(EmployeeSSNumber as int),'000-00-0000') from Employee;
Tuesday, January 12, 2016
Selects 1 Examples
use CommunityAssist Select * from Person; Select PersonFirstName as [First Name], PersonLastName [Last Name], PersonUserName as [User Name] From Person Order by PersonLastName Desc, PersonFirstName Desc; Select * From PersonAddress Where City='Kent'; Select * From PersonAddress Where Not City='Seattle'; Select * From PersonAddress Where City !='Seattle'; Select * From PersonAddress Where City <>'Seattle'; Select * From PersonAddress Where Apartment is not null And (City ='Seattle' Or City ='Bellevue'); Select GrantKey, GrantAmount, GrantAllocation from ServiceGrant Where GrantAmount>GrantAllocation; Select * From ServiceGrant Where GrantDate Between '2013-08-09' and '2013-08-09'; Select PersonLastName from Person where PersonLastName like '_anner_'; Select Distinct Top(5) GrantAmount from ServiceGrant Order by GrantAmount desc; Select Distinct GrantAmount from ServiceGrant Order by GrantAmount desc Offset 5 rows Fetch next 5 rows only;
Thursday, January 7, 2016
Creating and altering tables
Create database Assignment1Example; use Assignment1Example; /* This is a multi line comment */ Create Table Person ( -- identity autoincrements the integer PersonKey int identity(1,1) primary key, PersonLastName nvarchar(255) not null, PersonFirstname nvarchar(255) null, PersonAddress nvarchar(255) not null, PersonCity nvarchar(255) default 'Seattle', PersonState nchar(2), PersonZip nchar(10) not null ); Create table Donation ( DonationKey int identity(1,1), PersonKey int not null, DonationDonationDate date default GetDate(), DonationAmount decimal(10,2), constraint PK_Donation Primary key (DonationKey), constraint Fk_Person Foreign Key (PersonKey) references Person(PersonKey) ); Create table Volunteer ( VolunteerKey int identity(1,1), PersonKey int not null, VolunteerStartDate Date not null, VolunteerEndDate Date not null ) Alter table Volunteer Add Constraint PK_Volunteer Primary Key (VolunteerKey) Alter Table Volunteer Add Constraint FK_VolunteerPerson Foreign Key (PersonKey) references Person(PersonKey) Create table LinkToSomething ( PersonKey int, DonationKey int, Constraint pK_Link primary key(PersonKey, DonationKey), constraint FK_PersonLink foreign key(PersonKey) references Person(PersonKey), Constraint FK_Donor Foreign key (DonationKey) references Donation(donationKey) ) Alter table Person Drop column PersonState Alter Table Volunteer add VolunteerLocation Nvarchar(255) Begin tran Rollback tran Commit tran
Wednesday, January 6, 2016
Scope from in class
History
Client list for a lawyer
The practice was small but grew, and it became harder to track people and billable time. Originally on paper, but paper gets lost and paper is hard to search. A database would tracking and keeping track of client.
Scope
The database must track client information. It should track all the paperwork associated with each client. Track case deadlines. Add and archive clients. Track cases and case types. Track lawyers and which cases they work on. Track each lawyer’s billable hours by case. Track retainers. Generate Bills, Reports, deadline alert. Only firm and secretaries lawyers should be able to access the database.
Constraints.
Will not write front end. Won’t talk directly to the state databases.
Time line and deliverables
Gather information—
Requirements and Business Rules
Design
Build prototype and add sample data
Test sql