Skip to content

lab 6 #63

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

84 changes: 84 additions & 0 deletions labsolution.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@

CREATE TABLE Authors (
AuthorID INT PRIMARY KEY AUTO_INCREMENT,
AuthorName VARCHAR(255) NOT NULL
);


CREATE TABLE Posts (
PostID INT PRIMARY KEY AUTO_INCREMENT,
AuthorID INT,
Title VARCHAR(255) NOT NULL,
WordCount INT,
Views INT,
FOREIGN KEY (AuthorID) REFERENCES Authors(AuthorID)
);



CREATE TABLE Customers (
CustomerID INT PRIMARY KEY AUTO_INCREMENT,
CustomerName VARCHAR(255) NOT NULL,
CustomerStatus VARCHAR(50)
);


CREATE TABLE Flights (
FlightNumber VARCHAR(10) PRIMARY KEY,
Aircraft VARCHAR(50),
TotalAircraftSeats INT,
FlightMileage INT
);


CREATE TABLE CustomerFlights (
CustomerID INT,
FlightNumber VARCHAR(10),
TotalCustomerMileage INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID),
FOREIGN KEY (FlightNumber) REFERENCES Flights(FlightNumber),
PRIMARY KEY (CustomerID, FlightNumber)
);


SELECT COUNT(DISTINCT FlightNumber) AS TotalFlights
FROM CustomerFlights;

SELECT AVG(FlightMileage) AS AverageFlightDistance
FROM Flights;

SELECT AVG(TotalAircraftSeats) AS AverageSeats
FROM Flights;

SELECT c.CustomerStatus, AVG(cf.TotalCustomerMileage) AS AverageMiles
FROM CustomerFlights cf
JOIN Customers c ON cf.CustomerID = c.CustomerID
GROUP BY c.CustomerStatus;

SELECT c.CustomerStatus, MAX(cf.TotalCustomerMileage) AS MaxMiles
FROM CustomerFlights cf
JOIN Customers c ON cf.CustomerID = c.CustomerID
GROUP BY c.CustomerStatus;

SELECT COUNT(DISTINCT Aircraft) AS TotalBoeingAircraft
FROM Flights
WHERE Aircraft LIKE '%Boeing%';

SELECT FlightNumber, FlightMileage
FROM Flights
WHERE FlightMileage BETWEEN 300 AND 2000;

SELECT c.CustomerStatus, AVG(f.FlightMileage) AS AverageFlightDistance
FROM CustomerFlights cf
JOIN Customers c ON cf.CustomerID = c.CustomerID
JOIN Flights f ON cf.FlightNumber = f.FlightNumber
GROUP BY c.CustomerStatus;

SELECT f.Aircraft, COUNT(*) AS BookingCount
FROM CustomerFlights cf
JOIN Customers c ON cf.CustomerID = c.CustomerID
JOIN Flights f ON cf.FlightNumber = f.FlightNumber
WHERE c.CustomerStatus = 'Gold'
GROUP BY f.Aircraft
ORDER BY BookingCount DESC
LIMIT 1;
17 changes: 17 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.ironhack</groupId>
<artifactId>lab6</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
<maven.compiler.source>22</maven.compiler.source>
<maven.compiler.target>22</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

</project>
7 changes: 7 additions & 0 deletions src/main/java/com/ironhack/Main.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.ironhack;

public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
84 changes: 84 additions & 0 deletions src/main/java/com/ironhack/script/script.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@

CREATE TABLE Authors (
AuthorID INT PRIMARY KEY AUTO_INCREMENT,
AuthorName VARCHAR(255) NOT NULL
);


CREATE TABLE Posts (
PostID INT PRIMARY KEY AUTO_INCREMENT,
AuthorID INT,
Title VARCHAR(255) NOT NULL,
WordCount INT,
Views INT,
FOREIGN KEY (AuthorID) REFERENCES Authors(AuthorID)
);



CREATE TABLE Customers (
CustomerID INT PRIMARY KEY AUTO_INCREMENT,
CustomerName VARCHAR(255) NOT NULL,
CustomerStatus VARCHAR(50)
);


CREATE TABLE Flights (
FlightNumber VARCHAR(10) PRIMARY KEY,
Aircraft VARCHAR(50),
TotalAircraftSeats INT,
FlightMileage INT
);


CREATE TABLE CustomerFlights (
CustomerID INT,
FlightNumber VARCHAR(10),
TotalCustomerMileage INT,
FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID),
FOREIGN KEY (FlightNumber) REFERENCES Flights(FlightNumber),
PRIMARY KEY (CustomerID, FlightNumber)
);


SELECT COUNT(DISTINCT FlightNumber) AS TotalFlights
FROM CustomerFlights;

SELECT AVG(FlightMileage) AS AverageFlightDistance
FROM Flights;

SELECT AVG(TotalAircraftSeats) AS AverageSeats
FROM Flights;

SELECT c.CustomerStatus, AVG(cf.TotalCustomerMileage) AS AverageMiles
FROM CustomerFlights cf
JOIN Customers c ON cf.CustomerID = c.CustomerID
GROUP BY c.CustomerStatus;

SELECT c.CustomerStatus, MAX(cf.TotalCustomerMileage) AS MaxMiles
FROM CustomerFlights cf
JOIN Customers c ON cf.CustomerID = c.CustomerID
GROUP BY c.CustomerStatus;

SELECT COUNT(DISTINCT Aircraft) AS TotalBoeingAircraft
FROM Flights
WHERE Aircraft LIKE '%Boeing%';

SELECT FlightNumber, FlightMileage
FROM Flights
WHERE FlightMileage BETWEEN 300 AND 2000;

SELECT c.CustomerStatus, AVG(f.FlightMileage) AS AverageFlightDistance
FROM CustomerFlights cf
JOIN Customers c ON cf.CustomerID = c.CustomerID
JOIN Flights f ON cf.FlightNumber = f.FlightNumber
GROUP BY c.CustomerStatus;

SELECT f.Aircraft, COUNT(*) AS BookingCount
FROM CustomerFlights cf
JOIN Customers c ON cf.CustomerID = c.CustomerID
JOIN Flights f ON cf.FlightNumber = f.FlightNumber
WHERE c.CustomerStatus = 'Gold'
GROUP BY f.Aircraft
ORDER BY BookingCount DESC
LIMIT 1;