CREATE TABLE Staff (
    staff_id NUMBER PRIMARY KEY,
    gender TEXT,
    first_name TEXT,
    last_name TEXT,
    email_address TEXT,
    phone_number TEXT
);
CREATE TABLE Customers (
    customer_id NUMBER PRIMARY KEY,
    customer_type_code TEXT,
    address_line_1 TEXT,
    address_line_2 TEXT,
    town_city TEXT,
    state TEXT,
    email_address TEXT,
    phone_number TEXT
);
CREATE TABLE Products (
    product_id NUMBER PRIMARY KEY,
    parent_product_id NUMBER,
    product_category_code TEXT,
    date_product_first_available TIME,
    date_product_discontinued TIME,
    product_name TEXT,
    product_description TEXT,
    product_price NUMBER
);
CREATE TABLE Complaints (
    complaint_id NUMBER,
    product_id NUMBER,
    customer_id NUMBER,
    complaint_outcome_code TEXT,
    complaint_status_code TEXT,
    complaint_type_code TEXT,
    date_complaint_raised TIME,
    date_complaint_closed TIME,
    staff_id NUMBER,
    FOREIGN KEY ("customer_id") REFERENCES Customers("customer_id"),
    FOREIGN KEY ("product_id") REFERENCES Products("product_id"),
    FOREIGN KEY ("staff_id") REFERENCES Staff("staff_id")
);

Question: How many customers are there?
SQL: SELECT count(*) FROM customers

Question: Count the number of customers.
SQL: SELECT count(*) FROM customers

Question: Find the emails and phone numbers of all the customers, ordered by email address and phone number.
SQL: SELECT email_address ,  phone_number FROM customers ORDER BY email_address ,  phone_number

Question: What are the emails and phone numbers of all customers, sorted by email address and phone number?
SQL: SELECT email_address ,  phone_number FROM customers ORDER BY email_address ,  phone_number

Question: Which city has the least number of customers whose type code is "Good Credit Rating"?
SQL: SELECT town_city FROM customers WHERE customer_type_code  =  "Good Credit Rating" GROUP BY town_city ORDER BY count(*) LIMIT 1

Question: Return the city with the customer type code "Good Credit Rating" that had the fewest customers.
SQL: SELECT town_city FROM customers WHERE customer_type_code  =  "Good Credit Rating" GROUP BY town_city ORDER BY count(*) LIMIT 1

Question: List the name of all products along with the number of complaints that they have received.
SQL: SELECT t1.product_name ,  count(*) FROM products AS t1 JOIN complaints AS t2 ON t1.product_id  =  t2.product_id GROUP BY t1.product_name

Question: What are all the different product names, and how many complains has each received?
SQL: SELECT t1.product_name ,  count(*) FROM products AS t1 JOIN complaints AS t2 ON t1.product_id  =  t2.product_id GROUP BY t1.product_name

Question: Find the emails of customers who has filed a complaints of the product with the most complaints.
SQL: SELECT t1.email_address FROM customers AS t1 JOIN complaints AS t2 ON t1.customer_id  =  t2.customer_id GROUP BY t1.customer_id ORDER BY count(*) LIMIT 1

Question: What are the emails of customers who have filed complaints on the product which has had the greatest number of complaints?
SQL: SELECT t1.email_address FROM customers AS t1 JOIN complaints AS t2 ON t1.customer_id  =  t2.customer_id GROUP BY t1.customer_id ORDER BY count(*) LIMIT 1

Question: Which products has been complained by the customer who has filed least amount of complaints?
SQL: SELECT DISTINCT t1.product_name FROM products AS t1 JOIN complaints AS t2 ON t1.product_id  =  t2.product_id JOIN customers AS t3 GROUP BY t3.customer_id ORDER BY count(*) LIMIT 1

Question: Return the names of products that have had complaints filed by the customer who has filed the fewest complaints.
SQL: SELECT DISTINCT t1.product_name FROM products AS t1 JOIN complaints AS t2 ON t1.product_id  =  t2.product_id JOIN customers AS t3 GROUP BY t3.customer_id ORDER BY count(*) LIMIT 1

Question: What is the phone number of the customer who has filed the most recent complaint?
SQL: SELECT t1.phone_number FROM customers AS t1 JOIN complaints AS t2 ON t1.customer_id  =  t2.customer_id ORDER BY t2.date_complaint_raised DESC LIMIT 1

Question: Return the phone number of the customer who filed the complaint that was raised most recently.
SQL: SELECT t1.phone_number FROM customers AS t1 JOIN complaints AS t2 ON t1.customer_id  =  t2.customer_id ORDER BY t2.date_complaint_raised DESC LIMIT 1

Question: Find the email and phone number of the customers who have never filed a complaint before.
SQL: SELECT email_address ,  phone_number FROM customers WHERE customer_id NOT IN (SELECT customer_id FROM complaints)

Question: What are the emails and phone numbers of custoemrs who have never filed a complaint?
SQL: SELECT email_address ,  phone_number FROM customers WHERE customer_id NOT IN (SELECT customer_id FROM complaints)

Question: Find the phone number of all the customers and staff.
SQL: SELECT phone_number FROM customers UNION SELECT phone_number FROM staff

Question: What are the phone numbers of all customers and all staff members?
SQL: SELECT phone_number FROM customers UNION SELECT phone_number FROM staff

Question: What is the description of the product named "Chocolate"?
SQL: SELECT product_description FROM products WHERE product_name  =  "Chocolate"

Question: Return the description of the product called "Chocolate".
SQL: SELECT product_description FROM products WHERE product_name  =  "Chocolate"

Question: Find the name and category of the most expensive product.
SQL: SELECT product_name ,  product_category_code FROM products ORDER BY product_price DESC LIMIT 1

Question: What is the name and category code of the product with the highest price?
SQL: SELECT product_name ,  product_category_code FROM products ORDER BY product_price DESC LIMIT 1

Question: Find the prices of products which has never received a single complaint.
SQL: SELECT product_price FROM products WHERE product_id NOT IN (SELECT product_id FROM complaints)

Question: What are the prices of products that have never gotten a complaint?
SQL: SELECT product_price FROM products WHERE product_id NOT IN (SELECT product_id FROM complaints)

Question: What is the average price of the products for each category?
SQL: SELECT avg(product_price) ,  product_category_code FROM products GROUP BY product_category_code

Question: Return the average price of products that have each category code.
SQL: SELECT avg(product_price) ,  product_category_code FROM products GROUP BY product_category_code

Question: Find the last name of the staff member who processed the complaint of the cheapest product.
SQL: SELECT t1.last_name FROM staff AS t1 JOIN complaints AS t2 ON t1.staff_id  =  t2.staff_id JOIN products AS t3 ON t2.product_id  =  t3.product_id ORDER BY t3.product_price LIMIT 1

Question: What is the last name of the staff member in charge of the complaint on the product with the lowest price?
SQL: SELECT t1.last_name FROM staff AS t1 JOIN complaints AS t2 ON t1.staff_id  =  t2.staff_id JOIN products AS t3 ON t2.product_id  =  t3.product_id ORDER BY t3.product_price LIMIT 1

Question: Which complaint status has more than 3 records on file?
SQL: SELECT complaint_status_code FROM complaints GROUP BY complaint_status_code HAVING count(*)  >  3

Question: Return complaint status codes have more than 3 corresponding complaints?
SQL: SELECT complaint_status_code FROM complaints GROUP BY complaint_status_code HAVING count(*)  >  3

Question: Find the last name of the staff whose email address contains "wrau".
SQL: SELECT last_name FROM staff WHERE email_address LIKE "%wrau%"

Question: What are the last names of staff with email addressed containing the substring "wrau"?
SQL: SELECT last_name FROM staff WHERE email_address LIKE "%wrau%"

Question: How many customers are there in the customer type with the most customers?
SQL: SELECT count(*) FROM customers GROUP BY customer_type_code ORDER BY count(*) DESC LIMIT 1