567 lines
18 KiB
Plaintext
567 lines
18 KiB
Plaintext
# name: test/sakila/test_sakila.test_slow
|
|
# description: Run Sakila test queries
|
|
# group: [sakila]
|
|
|
|
statement ok
|
|
PRAGMA enable_verification
|
|
|
|
statement ok
|
|
CREATE TABLE actor (
|
|
actor_id numeric NOT NULL,
|
|
first_name VARCHAR(45) NOT NULL,
|
|
last_name VARCHAR(45) NOT NULL,
|
|
last_update TIMESTAMP NOT NULL --,
|
|
--PRIMARY KEY (actor_id)
|
|
)
|
|
|
|
statement ok
|
|
CREATE TABLE country (
|
|
country_id SMALLINT NOT NULL,
|
|
country VARCHAR(50) NOT NULL,
|
|
last_update TIMESTAMP,
|
|
PRIMARY KEY (country_id)
|
|
)
|
|
|
|
statement ok
|
|
CREATE TABLE city (
|
|
city_id int NOT NULL,
|
|
city VARCHAR(50) NOT NULL,
|
|
country_id SMALLINT NOT NULL,
|
|
last_update TIMESTAMP NOT NULL,
|
|
PRIMARY KEY (city_id) --,
|
|
--CONSTRAINT fk_city_country FOREIGN KEY (country_id) REFERENCES country (country_id) ON DELETE NO ACTION ON UPDATE CASCADE
|
|
)
|
|
|
|
statement ok
|
|
CREATE TABLE address (
|
|
address_id int NOT NULL,
|
|
address VARCHAR(50) NOT NULL,
|
|
address2 VARCHAR(50) DEFAULT NULL,
|
|
district VARCHAR(20) NOT NULL,
|
|
city_id INT NOT NULL,
|
|
postal_code VARCHAR(10) DEFAULT NULL,
|
|
phone VARCHAR(20) NOT NULL,
|
|
last_update TIMESTAMP NOT NULL,
|
|
PRIMARY KEY (address_id) --,
|
|
-- CONSTRAINT fk_address_city FOREIGN KEY (city_id) REFERENCES city (city_id) ON DELETE NO ACTION ON UPDATE CASCADE
|
|
)
|
|
|
|
statement ok
|
|
CREATE TABLE
|
|
LANGUAGE (
|
|
language_id SMALLINT NOT NULL,
|
|
name CHAR(20) NOT NULL,
|
|
last_update TIMESTAMP NOT NULL,
|
|
PRIMARY KEY (language_id)
|
|
)
|
|
|
|
statement ok
|
|
CREATE TABLE category (
|
|
category_id SMALLINT NOT NULL,
|
|
name VARCHAR(25) NOT NULL,
|
|
last_update TIMESTAMP NOT NULL,
|
|
PRIMARY KEY (category_id)
|
|
)
|
|
|
|
statement ok
|
|
CREATE TABLE customer (
|
|
customer_id INT NOT NULL,
|
|
store_id INT NOT NULL,
|
|
first_name VARCHAR(45) NOT NULL,
|
|
last_name VARCHAR(45) NOT NULL,
|
|
email VARCHAR(50) DEFAULT NULL,
|
|
address_id INT NOT NULL,
|
|
active CHAR(1) DEFAULT 'Y' NOT NULL,
|
|
create_date TIMESTAMP NOT NULL,
|
|
last_update TIMESTAMP NOT NULL,
|
|
PRIMARY KEY (customer_id) --,
|
|
-- CONSTRAINT fk_customer_store FOREIGN KEY (store_id) REFERENCES store (store_id) ON DELETE NO ACTION ON UPDATE CASCADE,
|
|
--CONSTRAINT fk_customer_address FOREIGN KEY (address_id) REFERENCES address (address_id) ON DELETE NO ACTION ON UPDATE CASCADE
|
|
)
|
|
|
|
statement ok
|
|
CREATE TABLE film (
|
|
film_id int NOT NULL,
|
|
title VARCHAR(255) NOT NULL,
|
|
description string DEFAULT NULL,
|
|
release_year VARCHAR(4) DEFAULT NULL,
|
|
language_id SMALLINT NOT NULL,
|
|
original_language_id SMALLINT DEFAULT NULL,
|
|
rental_duration SMALLINT DEFAULT 3 NOT NULL,
|
|
rental_rate DECIMAL(4, 2) DEFAULT 4.99 NOT NULL,
|
|
length SMALLINT DEFAULT NULL,
|
|
replacement_cost DECIMAL(5, 2) DEFAULT 19.99 NOT NULL,
|
|
rating VARCHAR(10) DEFAULT 'G',
|
|
special_features VARCHAR(100) DEFAULT NULL,
|
|
last_update TIMESTAMP NOT NULL,
|
|
PRIMARY KEY (film_id) --,
|
|
-- CONSTRAINT CHECK_special_features CHECK(special_features is null or
|
|
-- special_features like '%Trailers%' or
|
|
-- special_features like '%Commentaries%' or
|
|
-- special_features like '%Deleted Scenes%' or
|
|
-- special_features like '%Behind the Scenes%'),
|
|
-- CONSTRAINT CHECK_special_rating CHECK(rating in ('G','PG','PG-13','R','NC-17')),
|
|
-- CONSTRAINT fk_film_language FOREIGN KEY (language_id) REFERENCES language (language_id) ,
|
|
-- CONSTRAINT fk_film_language_original FOREIGN KEY (original_language_id) REFERENCES language (language_id)
|
|
)
|
|
|
|
statement ok
|
|
CREATE TABLE film_actor (
|
|
actor_id INT NOT NULL,
|
|
film_id INT NOT NULL,
|
|
last_update TIMESTAMP NOT NULL --,
|
|
-- PRIMARY KEY (actor_id, film_id) --,
|
|
-- CONSTRAINT fk_film_actor_actor FOREIGN KEY (actor_id) REFERENCES actor (actor_id) ON DELETE NO ACTION ON UPDATE CASCADE,
|
|
-- CONSTRAINT fk_film_actor_film FOREIGN KEY (film_id) REFERENCES film (film_id) ON DELETE NO ACTION ON UPDATE CASCADE
|
|
)
|
|
|
|
statement ok
|
|
CREATE TABLE film_category (
|
|
film_id INT NOT NULL,
|
|
category_id SMALLINT NOT NULL,
|
|
last_update TIMESTAMP NOT NULL --,
|
|
--PRIMARY KEY (film_id, category_id) --,
|
|
-- CONSTRAINT fk_film_category_film FOREIGN KEY (film_id) REFERENCES film (film_id) ON DELETE NO ACTION ON UPDATE CASCADE,
|
|
-- CONSTRAINT fk_film_category_category FOREIGN KEY (category_id) REFERENCES category (category_id) ON DELETE NO ACTION ON UPDATE CASCADE
|
|
)
|
|
|
|
statement ok
|
|
CREATE TABLE film_text (
|
|
film_id SMALLINT NOT NULL,
|
|
title VARCHAR(255) NOT NULL,
|
|
description string,
|
|
PRIMARY KEY (film_id)
|
|
)
|
|
|
|
statement ok
|
|
CREATE TABLE inventory (
|
|
inventory_id INT NOT NULL,
|
|
film_id INT NOT NULL,
|
|
store_id INT NOT NULL,
|
|
last_update TIMESTAMP NOT NULL,
|
|
PRIMARY KEY (inventory_id) --,
|
|
-- CONSTRAINT fk_inventory_store FOREIGN KEY (store_id) REFERENCES store (store_id) ON DELETE NO ACTION ON UPDATE CASCADE,
|
|
-- CONSTRAINT fk_inventory_film FOREIGN KEY (film_id) REFERENCES film (film_id) ON DELETE NO ACTION ON UPDATE CASCADE
|
|
)
|
|
|
|
statement ok
|
|
CREATE TABLE staff (
|
|
staff_id SMALLINT NOT NULL,
|
|
first_name VARCHAR(45) NOT NULL,
|
|
last_name VARCHAR(45) NOT NULL,
|
|
address_id INT NOT NULL,
|
|
picture string DEFAULT NULL,
|
|
email VARCHAR(50) DEFAULT NULL,
|
|
store_id INT NOT NULL,
|
|
active SMALLINT DEFAULT 1 NOT NULL,
|
|
username VARCHAR(16) NOT NULL,
|
|
PASSWORD VARCHAR(40) DEFAULT NULL,
|
|
last_update TIMESTAMP NOT NULL,
|
|
PRIMARY KEY (staff_id) --,
|
|
-- CONSTRAINT fk_staff_store FOREIGN KEY (store_id) REFERENCES store (store_id) ON DELETE NO ACTION ON UPDATE CASCADE,
|
|
-- CONSTRAINT fk_staff_address FOREIGN KEY (address_id) REFERENCES address (address_id) ON DELETE NO ACTION ON UPDATE CASCADE
|
|
)
|
|
|
|
statement ok
|
|
CREATE TABLE store (
|
|
store_id INT NOT NULL,
|
|
manager_staff_id SMALLINT NOT NULL,
|
|
address_id INT NOT NULL,
|
|
last_update TIMESTAMP NOT NULL,
|
|
PRIMARY KEY (store_id) --,
|
|
-- CONSTRAINT fk_store_staff FOREIGN KEY (manager_staff_id) REFERENCES staff (staff_id) ,
|
|
-- CONSTRAINT fk_store_address FOREIGN KEY (address_id) REFERENCES address (address_id)
|
|
)
|
|
|
|
statement ok
|
|
CREATE TABLE payment (
|
|
payment_id int NOT NULL,
|
|
customer_id INT NOT NULL,
|
|
staff_id SMALLINT NOT NULL,
|
|
rental_id INT DEFAULT NULL,
|
|
amount DECIMAL(5, 2) NOT NULL,
|
|
payment_date TIMESTAMP NOT NULL,
|
|
last_update TIMESTAMP NOT NULL,
|
|
PRIMARY KEY (payment_id) --,
|
|
-- CONSTRAINT fk_payment_rental FOREIGN KEY (rental_id) REFERENCES rental (rental_id) ON DELETE SET NULL ON UPDATE CASCADE,
|
|
-- CONSTRAINT fk_payment_customer FOREIGN KEY (customer_id) REFERENCES customer (customer_id) ,
|
|
-- CONSTRAINT fk_payment_staff FOREIGN KEY (staff_id) REFERENCES staff (staff_id)
|
|
)
|
|
|
|
statement ok
|
|
CREATE TABLE rental (
|
|
rental_id INT NOT NULL,
|
|
rental_date TIMESTAMP NOT NULL,
|
|
inventory_id INT NOT NULL,
|
|
customer_id INT NOT NULL,
|
|
return_date TIMESTAMP DEFAULT NULL,
|
|
staff_id SMALLINT NOT NULL,
|
|
last_update TIMESTAMP NOT NULL,
|
|
PRIMARY KEY (rental_id) --,
|
|
-- CONSTRAINT fk_rental_staff FOREIGN KEY (staff_id) REFERENCES staff (staff_id) ,
|
|
-- CONSTRAINT fk_rental_inventory FOREIGN KEY (inventory_id) REFERENCES inventory (inventory_id) ,
|
|
-- CONSTRAINT fk_rental_customer FOREIGN KEY (customer_id) REFERENCES customer (customer_id)
|
|
)
|
|
|
|
statement ok
|
|
CREATE VIEW customer_list AS
|
|
SELECT
|
|
cu.customer_id AS ID,
|
|
cu.first_name || ' ' || cu.last_name AS name,
|
|
a.address AS address,
|
|
a.postal_code AS zip_code,
|
|
a.phone AS phone,
|
|
city.city AS city,
|
|
country.country AS country,
|
|
CASE WHEN cu.active = 'Y' THEN
|
|
'active'
|
|
ELSE
|
|
''
|
|
END AS notes,
|
|
cu.store_id AS SID
|
|
FROM
|
|
customer AS cu
|
|
JOIN address AS a ON cu.address_id = a.address_id
|
|
JOIN city ON a.city_id = city.city_id
|
|
JOIN country ON city.country_id = country.country_id
|
|
|
|
statement ok
|
|
CREATE VIEW film_list AS
|
|
SELECT
|
|
film.film_id AS FID,
|
|
film.title AS title,
|
|
film.description AS description,
|
|
category.name AS category,
|
|
film.rental_rate AS price,
|
|
film.length AS length,
|
|
film.rating AS rating,
|
|
actor.first_name || ' ' || actor.last_name AS actors
|
|
FROM
|
|
category
|
|
LEFT JOIN film_category ON category.category_id = film_category.category_id
|
|
LEFT JOIN film ON film_category.film_id = film.film_id
|
|
JOIN film_actor ON film.film_id = film_actor.film_id
|
|
JOIN actor ON film_actor.actor_id = actor.actor_id
|
|
|
|
statement ok
|
|
CREATE VIEW staff_list AS
|
|
SELECT
|
|
s.staff_id AS ID,
|
|
s.first_name || ' ' || s.last_name AS name,
|
|
a.address AS address,
|
|
a.postal_code AS zip_code,
|
|
a.phone AS phone,
|
|
city.city AS city,
|
|
country.country AS country,
|
|
s.store_id AS SID
|
|
FROM
|
|
staff AS s
|
|
JOIN address AS a ON s.address_id = a.address_id
|
|
JOIN city ON a.city_id = city.city_id
|
|
JOIN country ON city.country_id = country.country_id
|
|
|
|
statement ok
|
|
CREATE VIEW sales_by_store AS
|
|
SELECT
|
|
s.store_id,
|
|
c.city || ',' || cy.country AS store,
|
|
m.first_name || ' ' || m.last_name AS manager,
|
|
SUM(p.amount) AS total_sales
|
|
FROM
|
|
payment AS p
|
|
INNER JOIN rental AS r ON p.rental_id = r.rental_id
|
|
INNER JOIN inventory AS i ON r.inventory_id = i.inventory_id
|
|
INNER JOIN store AS s ON i.store_id = s.store_id
|
|
INNER JOIN address AS a ON s.address_id = a.address_id
|
|
INNER JOIN city AS c ON a.city_id = c.city_id
|
|
INNER JOIN country AS cy ON c.country_id = cy.country_id
|
|
INNER JOIN staff AS m ON s.manager_staff_id = m.staff_id
|
|
GROUP BY
|
|
s.store_id,
|
|
c.city || ',' || cy.country,
|
|
m.first_name || ' ' || m.last_name
|
|
|
|
statement ok
|
|
CREATE VIEW sales_by_film_category AS
|
|
SELECT
|
|
c.name AS category,
|
|
SUM(p.amount) AS total_sales
|
|
FROM
|
|
payment AS p
|
|
INNER JOIN rental AS r ON p.rental_id = r.rental_id
|
|
INNER JOIN inventory AS i ON r.inventory_id = i.inventory_id
|
|
INNER JOIN film AS f ON i.film_id = f.film_id
|
|
INNER JOIN film_category AS fc ON f.film_id = fc.film_id
|
|
INNER JOIN category AS c ON fc.category_id = c.category_id
|
|
GROUP BY
|
|
c.name
|
|
|
|
statement ok
|
|
COPY actor FROM 'test/sakila/data/actor.csv' (HEADER, DELIMITER '|')
|
|
|
|
statement ok
|
|
COPY address FROM 'test/sakila/data/address.csv' (HEADER, DELIMITER '|')
|
|
|
|
statement ok
|
|
COPY category FROM 'test/sakila/data/category.csv' (HEADER, DELIMITER '|')
|
|
|
|
statement ok
|
|
COPY city FROM 'test/sakila/data/city.csv' (HEADER, DELIMITER '|')
|
|
|
|
statement ok
|
|
COPY country FROM 'test/sakila/data/country.csv' (HEADER, DELIMITER '|')
|
|
|
|
statement ok
|
|
COPY customer FROM 'test/sakila/data/customer.csv' (HEADER, DELIMITER '|')
|
|
|
|
statement ok
|
|
COPY film FROM 'test/sakila/data/film.csv' (HEADER, DELIMITER '|')
|
|
|
|
statement ok
|
|
COPY film_actor FROM 'test/sakila/data/film_actor.csv' (HEADER, DELIMITER '|')
|
|
|
|
statement ok
|
|
COPY film_category FROM 'test/sakila/data/film_category.csv' (HEADER, DELIMITER '|')
|
|
|
|
statement ok
|
|
COPY film_text FROM 'test/sakila/data/film_text.csv' (HEADER, DELIMITER '|')
|
|
|
|
statement ok
|
|
COPY inventory FROM 'test/sakila/data/inventory.csv' (HEADER, DELIMITER '|')
|
|
|
|
statement ok
|
|
COPY language FROM 'test/sakila/data/language.csv' (HEADER, DELIMITER '|')
|
|
|
|
statement ok
|
|
COPY payment FROM 'test/sakila/data/payment.csv' (HEADER, DELIMITER '|')
|
|
|
|
statement ok
|
|
COPY rental FROM 'test/sakila/data/rental.csv' (HEADER, DELIMITER '|')
|
|
|
|
statement ok
|
|
COPY staff FROM 'test/sakila/data/staff.csv' (HEADER, DELIMITER '|')
|
|
|
|
statement ok
|
|
COPY store FROM 'test/sakila/data/store.csv' (HEADER, DELIMITER '|')
|
|
|
|
query TT
|
|
SELECT first_name,last_name FROM actor ORDER BY actor_id LIMIT 10
|
|
----
|
|
PENELOPE GUINESS
|
|
NICK WAHLBERG
|
|
ED CHASE
|
|
JENNIFER DAVIS
|
|
JOHNNY LOLLOBRIGIDA
|
|
BETTE NICHOLSON
|
|
GRACE MOSTEL
|
|
MATTHEW JOHANSSON
|
|
JOE SWANK
|
|
CHRISTIAN GABLE
|
|
|
|
query RTT
|
|
SELECT actor_id, first_name, last_name FROM actor WHERE first_name='JOE' ORDER BY actor_id
|
|
----
|
|
9.000000 JOE SWANK
|
|
|
|
query RTT
|
|
SELECT actor_id, first_name, last_name FROM actor WHERE last_name LIKE '%GEN%' ORDER BY actor_id
|
|
----
|
|
14.000000 VIVIEN BERGEN
|
|
41.000000 JODIE DEGENERES
|
|
107.000000 GINA DEGENERES
|
|
166.000000 NICK DEGENERES
|
|
|
|
query IT
|
|
SELECT country_id, country FROM country WHERE country IN('Afghanistan', 'Bangladesh', 'China') ORDER BY country_id
|
|
----
|
|
1 Afghanistan
|
|
12 Bangladesh
|
|
23 China
|
|
|
|
query TI
|
|
SELECT last_name, COUNT(*) as lnc FROM actor GROUP BY last_name HAVING COUNT(*) >=4 ORDER BY lnc desc, last_name
|
|
----
|
|
KILMER 5
|
|
NOLTE 4
|
|
TEMPLE 4
|
|
|
|
query TTT
|
|
SELECT first_name, last_name, address FROM staff INNER JOIN address ON staff.address_id = address.address_id order by first_name, last_name
|
|
----
|
|
Jon Stephens 1411 Lillydale Drive
|
|
Mike Hillyer 23 Workhaven Lane
|
|
|
|
query TTR
|
|
SELECT first_name, last_name, SUM(amount) as total FROM staff INNER JOIN payment ON staff.staff_id = payment.staff_id AND payment_date::VARCHAR LIKE '2005-08%' GROUP BY first_name, last_name ORDER BY total
|
|
----
|
|
Mike Hillyer 11853.650000
|
|
Jon Stephens 12218.480000
|
|
|
|
query TI
|
|
SELECT title, COUNT(actor_id) as actor_count FROM film_actor INNER JOIN film ON film_actor.film_id = film.film_id GROUP BY title order by actor_count desc, title limit 10
|
|
----
|
|
LAMBS CINCINATTI 15
|
|
BOONDOCK BALLROOM 13
|
|
CHITTY LOCK 13
|
|
CRAZY HOME 13
|
|
DRACULA CRYSTAL 13
|
|
MUMMY CREATURES 13
|
|
RANDOM GO 13
|
|
ARABIA DOGMA 12
|
|
HELLFIGHTERS SIERRA 12
|
|
LESSON CLEOPATRA 12
|
|
|
|
query TI
|
|
SELECT title, COUNT(title) as copies_available FROM film INNER JOIN inventory ON film.film_id = inventory.film_id WHERE title = 'HUNCHBACK IMPOSSIBLE' GROUP BY title
|
|
----
|
|
HUNCHBACK IMPOSSIBLE 6
|
|
|
|
query TTR
|
|
SELECT first_name, last_name, SUM(amount) as total_paid FROM payment INNER JOIN customer ON payment.customer_id = customer.customer_id GROUP BY first_name, last_name ORDER BY total_paid desc, first_name limit 10
|
|
----
|
|
KARL SEAL 221.550000
|
|
ELEANOR HUNT 216.540000
|
|
CLARA SHAW 195.580000
|
|
MARION SNYDER 194.610000
|
|
RHONDA KENNEDY 194.610000
|
|
TOMMY COLLAZO 186.620000
|
|
WESLEY BULL 177.600000
|
|
TIM CARY 175.610000
|
|
MARCIA DEAN 175.580000
|
|
ANA BRADLEY 174.660000
|
|
|
|
query T
|
|
SELECT title FROM film WHERE title LIKE 'K%' OR title LIKE 'Q%' AND title IN ( SELECT title FROM film WHERE language_id IN ( SELECT language_id FROM language WHERE name ='English' ) ) ORDER BY title
|
|
----
|
|
KANE EXORCIST
|
|
KARATE MOON
|
|
KENTUCKIAN GIANT
|
|
KICK SAVANNAH
|
|
KILL BROTHERHOOD
|
|
KILLER INNOCENT
|
|
KING EVOLUTION
|
|
KISS GLORY
|
|
KISSING DOLLS
|
|
KNOCK WARLOCK
|
|
KRAMER CHOCOLATE
|
|
KWAI HOMEWARD
|
|
QUEEN LUKE
|
|
QUEST MUSSOLINI
|
|
QUILLS BULL
|
|
|
|
query TT
|
|
SELECT first_name, last_name FROM actor WHERE actor_id IN ( SELECT actor_id FROM film_actor WHERE film_id IN ( SELECT film_id FROM film WHERE title = 'ALONE TRIP' ) ) ORDER BY actor_id
|
|
----
|
|
ED CHASE
|
|
KARL BERRY
|
|
UMA WOOD
|
|
WOODY JOLIE
|
|
SPENCER DEPP
|
|
CHRIS DEPP
|
|
LAURENCE BULLOCK
|
|
RENEE BALL
|
|
|
|
query TTT
|
|
SELECT first_name, last_name, email FROM customer JOIN address ON (customer.address_id = address.address_id) JOIN city ON (city.city_id = address.city_id) JOIN country ON (country.country_id = city.country_id) WHERE country.country= 'Canada' ORDER BY first_name, last_name
|
|
----
|
|
CURTIS IRBY CURTIS.IRBY@sakilacustomer.org
|
|
DARRELL POWER DARRELL.POWER@sakilacustomer.org
|
|
DERRICK BOURQUE DERRICK.BOURQUE@sakilacustomer.org
|
|
LORETTA CARPENTER LORETTA.CARPENTER@sakilacustomer.org
|
|
TROY QUIGLEY TROY.QUIGLEY@sakilacustomer.org
|
|
|
|
query T
|
|
SELECT title FROM film WHERE film_id IN ( SELECT film_id FROM film_category WHERE category_id IN ( SELECT category_id FROM category WHERE name='Family' ) ) ORDER BY film_id LIMIT 10
|
|
----
|
|
AFRICAN EGG
|
|
APACHE DIVINE
|
|
ATLANTIS CAUSE
|
|
BAKED CLEOPATRA
|
|
BANG KWAI
|
|
BEDAZZLED MARRIED
|
|
BILKO ANONYMOUS
|
|
BLANKET BEVERLY
|
|
BLOOD ARGONAUTS
|
|
BLUES INSTINCT
|
|
|
|
query TI
|
|
SELECT title, COUNT(rental_id) as rental_count FROM rental JOIN inventory ON (rental.inventory_id = inventory.inventory_id) JOIN film ON (inventory.film_id = film.film_id) GROUP BY film.title ORDER BY COUNT(rental_id) DESC, title limit 10
|
|
----
|
|
BUCKET BROTHERHOOD 34
|
|
ROCKETEER MOTHER 33
|
|
FORWARD TEMPLE 32
|
|
GRIT CLOCKWORK 32
|
|
JUGGLER HARDLY 32
|
|
RIDGEMONT SUBMARINE 32
|
|
SCALAWAG DUCK 32
|
|
APACHE DIVINE 31
|
|
GOODFELLAS SALUTE 31
|
|
HOBBIT ALIEN 31
|
|
|
|
query IR
|
|
SELECT store.store_id, SUM(amount) as sum_amount FROM store INNER JOIN staff ON store.store_id = staff.store_id INNER JOIN payment ON payment.staff_id = staff.staff_id GROUP BY store.store_id order by sum_amount
|
|
----
|
|
1 33489.470000
|
|
2 33927.040000
|
|
|
|
query ITT
|
|
SELECT store_id, city, country FROM store INNER JOIN address ON store.address_id = address.address_id INNER JOIN city ON city.city_id = address.city_id INNER JOIN country ON country.country_id = city.country_id order by store_id
|
|
----
|
|
1 Lethbridge Canada
|
|
2 Woodridge Australia
|
|
|
|
query TR
|
|
SELECT name, SUM(amount) FROM category INNER JOIN film_category ON category.category_id = film_category.category_id INNER JOIN inventory ON film_category.film_id = inventory.film_id INNER JOIN rental ON inventory.inventory_id = rental.inventory_id INNER JOIN payment ON rental.rental_id = payment.rental_id GROUP BY name ORDER BY SUM(amount) DESC LIMIT 5
|
|
----
|
|
Sports 5314.210000
|
|
Sci-Fi 4756.980000
|
|
Animation 4656.300000
|
|
Drama 4587.390000
|
|
Comedy 4383.580000
|
|
|
|
# these four queries are equivalent, see https:www.jooq.org/benchmark
|
|
query TTI
|
|
SELECT first_name, last_name, count(*) FROM actor a JOIN film_actor fa USING (actor_id) WHERE last_name LIKE 'A%' GROUP BY fa.actor_id, a.first_name, a.last_name ORDER BY count(*) DESC
|
|
----
|
|
KIRSTEN AKROYD 34
|
|
CHRISTIAN AKROYD 32
|
|
ANGELINA ASTAIRE 31
|
|
KIM ALLEN 28
|
|
CUBA ALLEN 25
|
|
DEBBIE AKROYD 24
|
|
MERYL ALLEN 22
|
|
|
|
query TTI
|
|
SELECT first_name, last_name, count(*) FROM ( SELECT * FROM actor WHERE last_name LIKE 'A%' ) a JOIN film_actor USING (actor_id) GROUP BY a.actor_id, a.first_name, a.last_name ORDER BY count(*) DESC
|
|
----
|
|
KIRSTEN AKROYD 34
|
|
CHRISTIAN AKROYD 32
|
|
ANGELINA ASTAIRE 31
|
|
KIM ALLEN 28
|
|
CUBA ALLEN 25
|
|
DEBBIE AKROYD 24
|
|
MERYL ALLEN 22
|
|
|
|
query TTI
|
|
SELECT * FROM ( SELECT first_name, last_name, ( SELECT count(*) FROM film_actor fa WHERE a.actor_id = fa.actor_id ) AS c FROM actor a WHERE last_name LIKE 'A%' ) a WHERE c > 0 ORDER BY c DESC
|
|
----
|
|
KIRSTEN AKROYD 34
|
|
CHRISTIAN AKROYD 32
|
|
ANGELINA ASTAIRE 31
|
|
KIM ALLEN 28
|
|
CUBA ALLEN 25
|
|
DEBBIE AKROYD 24
|
|
MERYL ALLEN 22
|
|
|
|
query TTI
|
|
SELECT first_name, last_name, c FROM actor JOIN ( SELECT actor_id, count(*) c FROM film_actor GROUP BY actor_id ) fa USING (actor_id) WHERE last_name LIKE 'A%' ORDER BY c DESC
|
|
----
|
|
KIRSTEN AKROYD 34
|
|
CHRISTIAN AKROYD 32
|
|
ANGELINA ASTAIRE 31
|
|
KIM ALLEN 28
|
|
CUBA ALLEN 25
|
|
DEBBIE AKROYD 24
|
|
MERYL ALLEN 22
|
|
|