• Create DB Table View Procedure


    IF DB_ID('Wages') IS NOT NULL
    DROP DATABASE Wages
    GO
    create database Wages

    if OBJECT_ID('StudentInfo','U') IS NOT NULL
    DROP TABLE StudentInfo
    GO

    CREATE TABLE StudentInfo(
     ID int identity(1,1) NOT NULL PRIMARY KEY,
     Name nvarchar(10) not null,
     CompanyID int,
     PostDate datetime,
     Wage int,
     --FOREIGN KEY (CompanyID) REFERENCES WageInfo(CompanyID)
    )

    if OBJECT_ID('WageInfo','U') IS NOT NULL
    DROP TABLE WageInfo
    GO

    CREATE TABLE WageInfo(
     CompanyID int identity(1,1) primary key,
     CompanyName nvarchar(50) not null,
     Poste nvarchar(50) not null
    )

    Alter table WageInfo add FOREIGN KEY (CompanyID) REFERENCES WageInfo(CompanyID)

    INSERT INTO WageInfo(CompanyName,Poste)
    values
    ('NCS','DEVELOPER'),
    ('WISTRON','DEVELOPER'),
    ('IBM1','DEVELOPER'),
    ('IBM2','DEVELOPER'),
    ('IBM3','DEVELOPER');

    select * from WageInfo

    INSERT INTO StudentInfo(Name,CompanyID,PostDate,Wage)
    values
    ('Name1',1,GETDATE(),2000),
    ('Name2',2,GETDATE(),2500),
    ('Name3',3,GETDATE(),3000),
    ('Name4',4,GETDATE(),2000),
    ('Name4',NULL,NULL,NULL);

    delete from StudentInfo
    select * from StudentInfo

    --view1

    IF EXISTS(SELECT * FROM sysobjects where name='V_EMPLOYED_STUDENT' )
    DROP VIEW V_EMPLOYED_STUDENT
    GO

    CREATE VIEW V_EMPLOYED_STUDENT
    AS

    select Name,Poste,CompanyName,Wage,PostDate
    from StudentInfo A INNER JOIN WageInfo B
    ON A.CompanyID=B.CompanyID

    GO

    --view2
    IF EXISTS(SELECT * FROM sysobjects where name='V_NOT_EMPLOYED_STUDENT' )
    DROP VIEW V_NOT_EMPLOYED_STUDENT
    GO

    CREATE VIEW V_NOT_EMPLOYED_STUDENT
    AS

    select * from StudentInfo where CompanyID is not null

    GO
    --proc


    IF OBJECT_ID('PROC_HALF_DEVELOPER','P') IS NOT NULL
    BEGIN
     DROP PROCEDURE PROC_HALF_DEVELOPER
    END
    GO

    CREATE PROCEDURE PROC_HALF_DEVELOPER

    AS

    declare @Half_CT decimal
    declare @CT decimal

    select @Half_CT=COUNT(*)/2 from StudentInfo A inner join WageInfo B on A.CompanyID=B.CompanyID
    where B.Poste='DEVELOPER'

    select @CT=COUNT(*) from StudentInfo A inner join WageInfo B on A.CompanyID=B.CompanyID
    where B.Poste='DEVELOPER' and (A.Wage<3000 or A.Wage<4000 or A.Wage<6000)

    --having COUNT(*)>=@Half_CT
    --select @Half_CT,@CT

    while(@CT>=@Half_CT)
    begin

     update A
     SET A.Wage=A.Wage+50
     FROM StudentInfo A inner join WageInfo B on A.CompanyID=B.CompanyID
     where B.Poste='DEVELOPER'

     select @CT=COUNT(*) from StudentInfo A inner join WageInfo B on A.CompanyID=B.CompanyID
     where B.Poste='DEVELOPER' and (A.Wage<3000 or A.Wage<4000 or A.Wage<6000)

    end

    GO


    --proc


    IF OBJECT_ID('PROC_AVG_DEVELOPER','P') IS NOT NULL
    BEGIN
     DROP PROCEDURE PROC_AVG_DEVELOPER
    END
    GO

    CREATE PROCEDURE PROC_AVG_DEVELOPER

    AS

    declare @Wage_AVG decimal
    declare @n int

    select @Wage_AVG=AVG(A.Wage) from StudentInfo A inner join WageInfo B on A.CompanyID=B.CompanyID

    while(@Wage_AVG<=3500 )
    begin

     update A
     SET A.Wage=A.Wage+50
     from StudentInfo A inner join WageInfo B on A.CompanyID=B.CompanyID
     where B.Poste='DEVELOPER'

     select @Wage_AVG=AVG(A.Wage) from StudentInfo A inner join WageInfo B on A.CompanyID=B.CompanyID
     where B.Poste='DEVELOPER'

    end

    GO

  • 相关阅读:
    pyinstaller guid
    python filter()和map()函数
    python eval()
    day6
    repr()函数是什么鬼?
    fibonacci_question
    冒泡算法
    python 函数
    day4作业
    NOIp 2013 #1 积木大赛 Label:有趣的模拟
  • 原文地址:https://www.cnblogs.com/ganting/p/6750371.html
Copyright © 2020-2023  润新知