You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

55 lines
3.4 KiB

  1. -- query
  2. SELECT film.title FROM film INNER JOIN film_category ON film.film_id=film_category.film_id INNER JOIN category ON film_category.category_id=category.category_id WHERE (film.rating='R' OR film.rating='PG-13') AND (category.name='Horror' OR category.name='Sci-Fi') AND film.film_id NOT IN (SELECT DISTINCT film.film_id FROM film INNER JOIN inventory ON film.film_id=inventory.film_id INNER JOIN rental ON inventory.inventory_id=rental.inventory_id);
  3. -- explain analyze
  4. EXPLAIN ANALYZE SELECT film.title FROM film INNER JOIN film_category ON film.film_id=film_category.film_id INNER JOIN category ON film_category.category_id=category.category_id WHERE (film.rating='R' OR film.rating='PG-13') AND (category.name='Horror' OR category.name='Sci-Fi') AND film.film_id NOT IN (SELECT DISTINCT film.film_id FROM film INNER JOIN inventory ON film.film_id=inventory.film_id INNER JOIN rental ON inventory.inventory_id=rental.inventory_id);
  5. --EXPLAIN ANALYZE SELECT film.film_id FROM film INNER JOIN film_category ON film.film_id=film_category.film_id INNER JOIN category ON film_category.category_id=category.category_id INNER JOIN inventory ON film.film_id=inventory.film_id WHERE (film.rating='R' OR film.rating='PG-13') AND (category.name='Horror' OR category.name='Sci-Fi') AND NOT EXISTS (SELECT rental.inventory_id FROM rental WHERE rental.inventory_id=inventory.inventory_id);
  6. SELECT store.store_id FROM store
  7. INNER JOIN
  8. (
  9. SELECT store.store_id, SUM(payment.amount) AS total FROM store
  10. INNER JOIN inventory ON inventory.store_id=store.store_id
  11. INNER JOIN rental ON rental.inventory_id=inventory.inventory_id
  12. INNER JOIN payment ON payment.rental_id=rental.rental_id
  13. GROUP BY store.store_id
  14. ) subq2 ON subq2.store_id=store.store_id
  15. INNER JOIN address ON address.address_id=store.address_id
  16. INNER JOIN city ON city.city_id=address.city_id WHERE (subq2.total, city.city_id) IN
  17. (
  18. SELECT MAX(subq.total), city.city_id FROM (
  19. SELECT store.store_id, SUM(payment.amount) AS total FROM store
  20. INNER JOIN inventory ON inventory.store_id=store.store_id
  21. INNER JOIN rental ON rental.inventory_id=inventory.inventory_id
  22. INNER JOIN payment ON payment.rental_id=rental.rental_id
  23. GROUP BY store.store_id
  24. ) AS subq
  25. INNER JOIN store ON store.store_id=subq.store_id
  26. INNER JOIN address ON address.address_id=store.address_id
  27. INNER JOIN city ON city.city_id=address.city_id GROUP BY city.city_id
  28. );
  29. EXPLAIN ANALYZE SELECT store.store_id FROM store
  30. INNER JOIN
  31. (
  32. SELECT store.store_id, SUM(payment.amount) AS total FROM store
  33. INNER JOIN inventory ON inventory.store_id=store.store_id
  34. INNER JOIN rental ON rental.inventory_id=inventory.inventory_id
  35. INNER JOIN payment ON payment.rental_id=rental.rental_id
  36. GROUP BY store.store_id
  37. ) subq2 ON subq2.store_id=store.store_id
  38. INNER JOIN address ON address.address_id=store.address_id
  39. INNER JOIN city ON city.city_id=address.city_id WHERE (subq2.total, city.city_id) IN
  40. (
  41. SELECT MAX(subq.total), city.city_id FROM (
  42. SELECT store.store_id, SUM(payment.amount) AS total FROM store
  43. INNER JOIN inventory ON inventory.store_id=store.store_id
  44. INNER JOIN rental ON rental.inventory_id=inventory.inventory_id
  45. INNER JOIN payment ON payment.rental_id=rental.rental_id
  46. GROUP BY store.store_id
  47. ) AS subq
  48. INNER JOIN store ON store.store_id=subq.store_id
  49. INNER JOIN address ON address.address_id=store.address_id
  50. INNER JOIN city ON city.city_id=address.city_id GROUP BY city.city_id
  51. );