Skip to content

Instantly share code, notes, and snippets.

@alperbayram
Last active November 27, 2021 12:27
Show Gist options
  • Save alperbayram/699f24aea76b50de3dd6329205461474 to your computer and use it in GitHub Desktop.
Save alperbayram/699f24aea76b50de3dd6329205461474 to your computer and use it in GitHub Desktop.
SQL notes
--------------------------------------- 1 --------------------------------------
--film tablosunda bulunan title ve description sütunlarındaki verileri sıralayınız.
--film tablosunda bulunan tüm sütunlardaki verileri film uzunluğu (length) 60 dan büyük VE 75 ten küçük olma koşullarıyla sıralayınız.
--film tablosunda bulunan tüm sütunlardaki verileri rental_rate 0.99 VE replacement_cost 12.99 VEYA 28.99 olma koşullarıyla sıralayınız.
--customer tablosunda bulunan first_name sütunundaki değeri 'Mary' olan müşterinin last_name sütunundaki değeri nedir?
--film tablosundaki uzunluğu(length) 50 ten büyük OLMAYIP aynı zamanda rental_rate değeri 2.99 veya 4.99 OLMAYAN verileri sıralayınız.
SELECT title, description FROM film
SELECT * FROM film WHERE length>60 AND length<75
SELECT * FROM film
WHERE rental_rate = 0.99 AND (replacement_cost = 12.99 OR replacement_cost = 28.99)
SELECT first_name, last_name FROM customer
WHERE first_name = 'Mary'
SELECT length FROM film
WHERE NOT length>50 AND (rental_rate = 2.99 OR rental_rate = 2.99)
--------------------------------------- 2 --------------------------------------
--film tablosunda bulunan tüm sütunlardaki verileri replacement cost değeri 12.99 dan büyük eşit ve 16.99 küçük olma koşuluyla sıralayınız ( BETWEEN - AND yapısını kullanınız.)
--.actor tablosunda bulunan first_name ve last_name sütunlardaki verileri first_name 'Penelope' veya 'Nick' veya 'Ed' değerleri olması koşuluyla sıralayınız. ( IN operatörünü kullanınız.)
--film tablosunda bulunan tüm sütunlardaki verileri rental_rate 0.99, 2.99, 4.99 VE replacement_cost 12.99, 15.99, 28.99 olma koşullarıyla sıralayınız. ( IN operatörünü kullanınız.)
SELECT * FROM film
WHERE replacement_cost BETWEEN 12.99 AND 16.99
SELECT first_name, last_name FROM actor
WHERE first_name IN ('Penelope', 'Nick', 'Ed')
SELECT * FROM film
WHERE rental_rate IN(0.99, 2.99, 4.99) AND replacement_cost IN(12.99, 15.99, 28.99)
--------------------------------------- 3 --------------------------------------
--country tablosunda bulunan country sütunundaki ülke isimlerinden 'A' karakteri ile başlayıp 'a' karakteri ile sonlananları sıralayınız.
--country tablosunda bulunan country sütunundaki ülke isimlerinden en az 6 karakterden oluşan ve sonu 'n' karakteri ile sonlananları sıralayınız.
--film tablosunda bulunan title sütunundaki film isimlerinden en az 4 adet büyük ya da küçük harf farketmesizin 'T' karakteri içeren film isimlerini sıralayınız.
--film tablosunda bulunan tüm sütunlardaki verilerden title 'C' karakteri ile başlayan ve uzunluğu (length) 90 dan büyük olan ve rental_rate 2.99 olan verileri sıralayınız.
SELECT * FROM country
WHERE country LIKE 'A%a'
SELECT country FROM country
WHERE length(country)>=6 AND country LIKE '%n'
SELECT title FROM film
WHERE title ILIKE '%T%T%T%T%'
SELECT * FROM film
WHERE title LIKE 'C%' AND (length>90 AND rental_rate =2.99)
--------------------------------------- 4 --------------------------------------
--film tablosunda bulunan replacement_cost sütununda bulunan birbirinden farklı değerleri sıralayınız.
--film tablosunda bulunan replacement_cost sütununda birbirinden farklı kaç tane veri vardır?
--film tablosunda bulunan film isimlerinde (title) kaç tanesini T karakteri ile başlar ve aynı zamanda rating 'G' ye eşittir?
--country tablosunda bulunan ülke isimlerinden (country) kaç tanesi 5 karakterden oluşmaktadır?
--city tablosundaki şehir isimlerinin kaç tanesi 'R' veya r karakteri ile biter?
SELECT DISTINCT(replacement_cost) FROM film
SELECT COUNT(DISTINCT(replacement_cost)) FROM film
SELECT COUNT(title) FROM film
WHERE title LIKE 'T%' AND rating ='G'
SELECT COUNT(*) FROM country
WHERE length(country)=5
SELECT COUNT(*) FROM city
WHERE city LIKE '%R' OR city LIKE '%r'
--------------------------------------- 5 --------------------------------------
--film tablosunda bulunan ve film ismi (title) 'n' karakteri ile biten en uzun (length) 5 filmi sıralayınız.
--film tablosunda bulunan ve film ismi (title) 'n' karakteri ile biten en kısa (length) ikinci(6,7,8,9,10) 5 filmi(6,7,8,9,10) sıralayınız.
--customer tablosunda bulunan last_name sütununa göre azalan yapılan sıralamada store_id 1 olmak koşuluyla ilk 4 veriyi sıralayınız.
SELECT title FROM film
WHERE title LIKE '%n'
ORDER BY length(title) DESC
LIMIT 5
SELECT title FROM film
WHERE title LIKE '%n'
ORDER BY length(title) ASC
OFFSET 5
LIMIT 5
SELECT * FROM customer
WHERE store_id = 1
ORDER BY length(last_name) ASC
LIMIT 4
--------------------------------------- 6 --------------------------------------
--film tablosunda bulunan rental_rate sütunundaki değerlerin ortalaması nedir?
--film tablosunda bulunan filmlerden kaç tanesi 'C' karakteri ile başlar?
--film tablosunda bulunan filmlerden rental_rate değeri 0.99 a eşit olan en uzun (length) film kaç dakikadır?
--film tablosunda bulunan filmlerin uzunluğu 150 dakikadan büyük olanlarına ait kaç farklı replacement_cost değeri vardır?
SELECT AVG(rental_rate) FROM film
SELECT COUNT(title) FROM film
WHERE title LIKE 'C%'
SELECT MAX(length) FROM film
WHERE rental_rate = 0.99
SELECT DISTINCT(replacement_cost) FROM film
WHERE length > 150
--------------------------------------- 7 --------------------------------------
--film tablosunda bulunan filmleri rating değerlerine göre gruplayınız.
--film tablosunda bulunan filmleri replacement_cost sütununa göre grupladığımızda film sayısı 50 den fazla olan replacement_cost değerini ve karşılık gelen film sayısını sıralayınız.
--customer tablosunda bulunan store_id değerlerine karşılık gelen müşteri sayılarını nelerdir? 4. city tablosunda bulunan şehir verilerini country_id sütununa göre gruplandırdıktan sonra en fazla şehir sayısı barındıran country_id bilgisini ve şehir sayısını paylaşınız.
--city tablosunda bulunan şehir verilerini country_id sütununa göre gruplandırdıktan sonra en fazla şehir sayısı barındıran country_id bilgisini ve şehir sayısını paylaşınız.
SELECT rating
FROM film
GROUP BY rating
SELECT replacement_cost, COUNT(*)
FROM film
GROUP BY replacement_cost
HAVING COUNT(*) > 50
SELECT store_id ,COUNT(*)
FROM customer
GROUP BY store_id
SELECT country_id ,COUNT(*)
FROM city
GROUP BY country_id
ORDER BY COUNT(*) DESC
LIMIT 1
--------------------------------------- 8 --------------------------------------
--test veritabanınızda employee isimli sütun bilgileri id(INTEGER), name VARCHAR(50), birthday DATE, email VARCHAR(100) olan bir tablo oluşturalım.
--Oluşturduğumuz employee tablosuna 'Mockaroo' servisini kullanarak 50 adet veri ekleyelim.
--Sütunların her birine göre diğer sütunları güncelleyecek 5 adet UPDATE işlemi yapalım.
--Sütunların her birine göre ilgili satırı silecek 5 adet DELETE işlemi yapalım.
CREATE TABLE employee (
id INTEGER PRIMARY KEY,
name VARCHAR(50) NOT NULL,
birthday DATE,
email VARCHAR(100)
);
insert into employee (id, name, birthday, email) values (1, 'Edwina', '2015/05/10', 'ehubbart0@google.es');
insert into employee (id, name, birthday, email) values (2, 'Shandie', '2005/08/30', 'sshortin1@vkontakte.ru');
insert into employee (id, name, birthday, email) values (3, 'Celisse', '2003/07/12', 'cmonckton2@dailymotion.com');
insert into employee (id, name, birthday, email) values (4, 'Judie', '2017/12/07', 'jbaumler3@nyu.edu');
insert into employee (id, name, birthday, email) values (5, 'Ricky', '2012/04/08', 'rdriscoll4@slashdot.org');
UPDATE employee
SET name = 'Mayak',
birthday = '2033/11/30',
email = 'mayaka0@apache.org'
WHERE id = 1;
UPDATE employee
SET name = 'UPDATE '
WHERE name LIKE 'K%';
UPDATE employee
SET name = 'UPDATE A'
WHERE name ILIKE 'a%a%';
UPDATE employee
SET name = 'DELELETE',
email = 'DELETE'
WHERE id > 30 ;
DELETE FROM employee
WHERE id > 30;
DELETE FROM employee
WHERE name LIKE 'T%';
--------------------------------------- 9 --------------------------------------
--city tablosu ile country tablosunda bulunan şehir (city) ve ülke (country) isimlerini birlikte görebileceğimiz INNER JOIN sorgusunu yazınız.
--customer tablosu ile payment tablosunda bulunan payment_id ile customer tablosundaki first_name ve last_name isimlerini birlikte görebileceğimiz INNER JOIN sorgusunu yazınız.
--customer tablosu ile rental tablosunda bulunan rental_id ile customer tablosundaki first_name ve last_name isimlerini birlikte görebileceğimiz INNER JOIN sorgusunu yazınız.
SELECT country.country, city.city
FROM country
JOIN city ON city.city_id = country.country_id;
SELECT customer.first_name, customer.last_name , payment.payment_id
FROM customer
JOIN payment ON payment.customer_id = customer.customer_id;
SELECT customer.first_name, customer.last_name , rental.rental_id
FROM customer
JOIN rental ON rental.customer_id = customer.customer_id;
--------------------------------------- 10 --------------------------------------
--city tablosu ile country tablosunda bulunan şehir (city) ve ülke (country) isimlerini birlikte görebileceğimiz LEFT JOIN sorgusunu yazınız.
--customer tablosu ile payment tablosunda bulunan payment_id ile customer tablosundaki first_name ve last_name isimlerini birlikte görebileceğimiz RIGHT JOIN sorgusunu yazınız.
--customer tablosu ile rental tablosunda bulunan rental_id ile customer tablosundaki first_name ve last_name isimlerini birlikte görebileceğimiz FULL JOIN sorgusunu yazınız.
SELECT city.city, country.country
FROM city
LEFT JOIN country
ON country.country_id = city.country_id;
SELECT customer.first_name, customer.last_name, payment.payment_id
FROM customer
RIGHT JOIN payment
ON payment.customer_id = customer.customer_id;
SELECT customer.first_name, customer.last_name, rental.rental_id
FROM customer
FULL JOIN rental
ON rental.customer_id = customer.customer_id;
--------------------------------------- 11 --------------------------------------
--actor ve customer tablolarında bulunan first_name sütunları için tüm verileri sıralayalım.
--actor ve customer tablolarında bulunan first_name sütunları için kesişen verileri sıralayalım.
--actor ve customer tablolarında bulunan first_name sütunları için ilk tabloda bulunan ancak ikinci tabloda bulunmayan verileri sıralayalım.
--İlk 3 sorguyu tekrar eden veriler için de yapalım.
(SELECT first_name
FROM customer)
UNION
(SELECT first_name
FROM actor);
(SELECT first_name
FROM customer)
INTERSECT
(SELECT first_name
FROM actor);
(SELECT first_name
FROM customer)
EXCEPT
(SELECT first_name
FROM actor);
(SELECT first_name
FROM customer)
UNION ALL
(SELECT first_name
FROM actor);
(SELECT first_name
FROM customer)
INTERSECT ALL
(SELECT first_name
FROM actor);
(SELECT first_name
FROM customer)
EXCEPT ALL
(SELECT first_name
FROM actor);
--------------------------------------- 12 --------------------------------------
--film tablosunda film uzunluğu length sütununda gösterilmektedir. Uzunluğu ortalama film uzunluğundan fazla kaç tane film vardır?
--film tablosunda en yüksek rental_rate değerine sahip kaç tane film vardır?
--film tablosunda en düşük rental_rate ve en düşün replacement_cost değerlerine sahip filmleri sıralayınız.
--payment tablosunda en fazla sayıda alışveriş yapan müşterileri(customer) sıralayınız.
SELECT COUNT(length)
FROM film
WHERE length >
(
SELECT AVG(length)
FROM film
)
SELECT COUNT(rental_rate),rental_rate
FROM film
GROUP BY rental_rate
ORDER BY rental_rate DESC
LIMIT 1;
SELECT title, film_id, rental_rate, replacement_cost
FROM film
WHERE film_id = ANY
(
SELECT film_id
FROM film
ORDER BY rental_rate ASC, replacement_cost ASC
);
SELECT customer.first_name, customer.last_name, payment.amount FROM customer
JOIN payment ON payment.customer_id = customer.customer_id
GROUP BY customer.first_name, customer.last_name, payment.amount
ORDER BY payment.amount DESC;
--------------------------------------- 13 --------------------------------------
--film tablosundan 'K' karakteri ile başlayan en uzun ve replacenet_cost u en düşük 4 filmi sıralayınız.
--film tablosunda içerisinden en fazla sayıda film bulunduran rating kategorisi hangisidir?
--cutomer tablosunda en çok alışveriş yapan müşterinin adı nedir?
--category tablosundan kategori isimlerini ve kategori başına düşen film sayılarını sıralayınız.
--film tablosunda isminde en az 4 adet 'e' veya 'E' karakteri bulunan kç tane film vardır?
SELECT COUNT(*), category.name
FROM category
JOIN film_category ON film_category.category_id = category.category_id
JOIN film ON film.film_id = film_category.film_id
GROUP BY category.name;
SELECT COUNT(*), rating
FROM film
GROUP BY rating
ORDER BY COUNT(*) DESC
LIMIT 1;
SELECT title, length, replacement_cost
FROM film
WHERE title LIKE 'K%'
ORDER BY length DESC, replacement_cost ASC
LIMIT 3;
SELECT SUM(amount), customer.first_name, customer.last_name
FROM payment
JOIN customer ON customer.customer_id = payment.customer_id
GROUP BY payment.customer_id, customer.first_name, customer.last_name
ORDER BY SUM(amount) DESC
LIMIT 1;
SELECT title
FROM film
WHERE title ILIKE '%e%e%e%e';
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment