SQL 作业 – 机场数据库

SQL Assignment – Airport Database

列出所有州和每个州的机场数量,机场总规模和平均规模按大小降序排列。

CREATE TABLE Airport(
    AirName     char(3)     NOT NULL,
    City        varchar(20) NOT NULL,
    State       varchar(20) NOT NULL,
    Size        int     NULL,
    YearOpened  int     NULL,
    CONSTRAINT AirportPK PRIMARY KEY(AirName));

CREATE TABLE Skill(
    SkillNum    int     NOT NULL,
    SkillName   varchar(25) NOT NULL,
    SkillCat    varchar(20) NOT NULL,
    CONSTRAINT SkillPK PRIMARY KEY(SkillNum));


CREATE TABLE Mechanic(
    MechNum     int     NOT NULL,
    MechName    varchar(25) NOT NULL,
    Salary      decimal(9,2)    NULL,
    AirName     char(3)     NULL,
    CONSTRAINT MechanicPK PRIMARY KEY(MechNum),
    CONSTRAINT AirportFK FOREIGN KEY(AirName)
        REFERENCES Airport(AirName)
            ON UPDATE CASCADE
            ON DELETE NO ACTION);

CREATE TABLE Qualification(
    MechNum     Int NOT NULL,
    SkillNum    Int NOT NULL,
    ProfRate    Int NULL,
    CONSTRAINT QualPK PRIMARY KEY(MechNum, SkillNum),
    CONSTRAINT MechanicFK FOREIGN KEY(MechNum)
        REFERENCES Mechanic(MechNum)
            ON UPDATE CASCADE
            ON DELETE NO ACTION,
    CONSTRAINT SkillFK FOREIGN KEY(SkillNum)
        REFERENCES Skill(SkillNum)
            ON UPDATE CASCADE
            ON DELETE NO ACTION);

INSERT INTO Airport VALUES ('DFW', 'Dallas', 'Texas', 60, 1950)
INSERT INTO Airport VALUES ('JFK', 'New York', 'New York', 45, 1940)
INSERT INTO Airport VALUES ('LAX', 'Los Angeles', 'California', 55, 1925)
INSERT INTO Airport VALUES ('LGA', 'New York', 'New York', 35, 1930)
INSERT INTO Airport VALUES ('MDW', 'Chicago', 'Illinois', 15, 1925)
INSERT INTO Airport VALUES ('MEM', 'Memphis', 'Tennessee', 40, 1932)
INSERT INTO Airport VALUES ('MIA', 'Miami', 'Florida', 55, 1930)
INSERT INTO Airport VALUES ('MOD', 'Modesto', 'California', 15, 1938)
INSERT INTO Airport VALUES ('MRY', 'Monterey', 'California', 15, 1948)
INSERT INTO Airport VALUES ('ONT', 'Ontario', 'California', 45, 1946)
INSERT INTO Airport VALUES ('ORD', 'Chicago', 'Illinois', 50, 1925)
INSERT INTO Airport VALUES ('PSP', 'Palm Springs', 'California', 18, 1932)
INSERT INTO Airport VALUES ('SAN', 'San Diego', 'California', 40, 1928)
INSERT INTO Airport VALUES ('SFO', 'San Francisco', 'California', 30, 1930)
INSERT INTO Airport VALUES ('SJC', 'San Jose', 'California', 47, 1937)
INSERT INTO Airport VALUES ('SMF', 'Sacramento', 'California', 55, 1940)

INSERT INTO Skill VALUES (1837, 'Engine Replacement', 'Engine')
INSERT INTO Skill VALUES (2244, 'Tire Change', 'Exterior')
INSERT INTO Skill VALUES (2695, 'Fuel System', 'Engine')
INSERT INTO Skill VALUES (2800, 'Cockpit Instruments', 'Instruments')
INSERT INTO Skill VALUES (2854, 'Flight Data Recorder', 'Instruments')
INSERT INTO Skill VALUES (2855, 'Flight Voice Recorder', 'Instruments')
INSERT INTO Skill VALUES (3721, 'Fan Blade Replacement', 'Engine')
INSERT INTO Skill VALUES (4394, 'Air Conditioning', 'Cabin')
INSERT INTO Skill VALUES (6238, 'Fuselage Repair', 'Exterior')
INSERT INTO Skill VALUES (8361, 'Seat Repair', 'Cabin')
INSERT INTO Skill VALUES (9237, 'Glass Repair', 'Exterior')

INSERT INTO Mechanic VALUES (3817, 'Rose', 71900, 'MOD')
INSERT INTO Mechanic VALUES (4187, 'Singh', 52900, 'SFO')
INSERT INTO Mechanic VALUES (11299, 'Young', 42900, 'DFW')
INSERT INTO Mechanic VALUES (13829, 'Stevens', 68200, 'LAX')
INSERT INTO Mechanic VALUES (15289, 'Baker', 42800, 'MOD')
INSERT INTO Mechanic VALUES (28392, 'Smith', 65000, 'SFO')
INSERT INTO Mechanic VALUES (29246, 'Smith', 50000, 'LAX')
INSERT INTO Mechanic VALUES (29517, 'Norton', 47300, 'LAX')
INSERT INTO Mechanic VALUES (31387, 'Baker', 61800, 'SJC')
INSERT INTO Mechanic VALUES (32781, 'Perez', 52800, 'SFO')
INSERT INTO Mechanic VALUES (38110, 'Adams', 63500, 'PSP')
INSERT INTO Mechanic VALUES (39481, 'Vincent', 52800, 'SJC')
INSERT INTO Mechanic VALUES (41287, 'Kirby', 52000, 'ONT')
INSERT INTO Mechanic VALUES (42728, 'Johnson', 52900, 'ONT')
INSERT INTO Mechanic VALUES (44100, 'Walters', 62900, 'MIA')
INSERT INTO Mechanic VALUES (49128, 'Taylor', 58300, 'PSP')
INSERT INTO Mechanic VALUES (52822, 'Caldwell', 51500, 'MRY')
INSERT INTO Mechanic VALUES (62928, 'Martin', 47300, 'ORD')
INSERT INTO Mechanic VALUES (62999, 'Lorimer', 42900, 'SMF')
INSERT INTO Mechanic VALUES (67183, 'Schwartz', 62700, 'JFK')
INSERT INTO Mechanic VALUES (71919, 'Gonzalez', 62900, 'SAN')
INSERT INTO Mechanic VALUES (77289, 'Edwards', 49500, 'MEM')
INSERT INTO Mechanic VALUES (83710, 'Williams', 67000, 'SMF')
INSERT INTO Mechanic VALUES (84728, 'Jackson', 45000, 'SAN')
INSERT INTO Mechanic VALUES (90274, 'Chen', 52000, 'LGA')
INSERT INTO Mechanic VALUES (91838, 'Vega', 47200, 'MRY')
INSERT INTO Mechanic VALUES (92729, 'Martin', 58200, 'LAX')

INSERT INTO Qualification VALUES(3817, 1837, 6)
INSERT INTO Qualification VALUES(3817, 3721, 7)
INSERT INTO Qualification VALUES(3817, 4394, 7)
INSERT INTO Qualification VALUES(15289, 2854, 2)
INSERT INTO Qualification VALUES(15289, 3721, 2)
INSERT INTO Qualification VALUES(28392, 2855, 4)
INSERT INTO Qualification VALUES(29246, 3721, 3)
INSERT INTO Qualification VALUES(29517, 2695, 5)
INSERT INTO Qualification VALUES(31387, 3721, 4)
INSERT INTO Qualification VALUES(32781, 3721, 6)
INSERT INTO Qualification VALUES(38110, 3721, 4)
INSERT INTO Qualification VALUES(39481, 3721, 2)
INSERT INTO Qualification VALUES(39481, 9237, 4)
INSERT INTO Qualification VALUES(41287, 2800, 5)
INSERT INTO Qualification VALUES(42728, 2855, 3)
INSERT INTO Qualification VALUES(42728, 8361, 5)
INSERT INTO Qualification VALUES(44100, 3721, 4)
INSERT INTO Qualification VALUES(44100, 9237, 3)
INSERT INTO Qualification VALUES(52822, 1837, 3)
INSERT INTO Qualification VALUES(62928, 3721, 4)
INSERT INTO Qualification VALUES(62999, 2244, 2)
INSERT INTO Qualification VALUES(67183, 3721, 4)
INSERT INTO Qualification VALUES(77289, 3721, 5)
INSERT INTO Qualification VALUES(90274, 6238, 5)
INSERT INTO Qualification VALUES(91838, 3721, 4)
INSERT INTO Qualification VALUES(92729, 2800, 6)
INSERT INTO Qualification VALUES(92729, 3721, 5)

您可以尝试以下查询 -

SELECT State, COUNT(AirName) NO_OF_AIRPORTS, SUM(Size) TOTAL_SIZE, AVG(Size) AVERAGE_SIZE
FROM Airport
GROUP BY State
ORDER BY TOTAL_SIZE DESC;