Skip to content

snurtas/data-science-project-3

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Data Science SQL Project 3 - GROUP BY ve Aggregate Fonksiyonlar

Proje Kurulumu

  1. Projeyi fork edin ve kendi hesabınıza clone edin.
  2. Terminal'de proje klasörüne girin.

Mac / Linux

python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Windows

python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt

Veritabanı Kurulumu

  1. PostgreSQL'in bilgisayarınızda kurulu ve çalışır durumda olduğundan emin olun.
  2. scripts/init_db.py dosyasındaki SQL komutlarını sırasıyla kendi local veritabanınızda çalıştırın.
  3. Tabloların doğru oluştuğundan emin olmak için her tabloya birer SELECT * sorgusu atın.

Not: data/question.py içindeki connect_db() fonksiyonunda veritabanı bağlantı bilgileri var. Localinizde test ederken kendi bilgilerinizle değiştirin. Pushlarken bu bilgileri varsayılan haliyle bırakın.

Başlangıç Ayarları

  1. tests/test_question.py — Dosyanın altındaki run_tests() fonksiyonunda user_id değerini kendi kullanıcı ID'nizle değiştirin.
  2. data/question.pyconnect_db() fonksiyonundaki veritabanı şifresini kendi local PostgreSQL şifrenizle değiştirin. Pushlarken varsayılan haliyle bırakın.

Çalışma Şekli

  • Sadece data/question.py dosyasında çalışın.
  • Her fonksiyon içindeki boş cursor.execute('') satırına SQL sorgunuzu yazın.
  • Diğer dosyaları değiştirmeyin.

Testleri Çalıştırma

python watch.py

Tek seferlik:

pytest tests/test_question.py -s -v

Tablolar

students

Sütun Tip
student_id SERIAL (PK)
first_name VARCHAR(50)
last_name VARCHAR(50)
age INT
city VARCHAR(50)

courses

Sütun Tip
course_id SERIAL (PK)
course_name VARCHAR(100)
category VARCHAR(50)

enrollments

Sütun Tip
enrollment_id SERIAL (PK)
student_id INT (FK -> students)
course_id INT (FK -> courses)
enrollment_date DATE

Sorular

Bölüm 1: Tarih Fonksiyonları

  1. DATE_TRUNC ile ay bazlı kayıt sayılarını listele. (month, count — aya göre sıralı)

  2. DATE_PART ile kayıtların sadece yıl bilgisini al. (Tek sütun: year)

Bölüm 2: Aggregate Fonksiyonlar

  1. Tüm öğrencilerin yaşlarının toplamını döndür. (Tek değer: SUM)

  2. Toplam kurs sayısını bul. (SELECT COUNT(course_id) ... — tek satır döner)

  3. Yaşı ortalama yaştan büyük olan öğrencileri getir. (Tüm sütunlar, student_id'ye göre sıralı)

  4. Her kursun en eski kayıt tarihini bul. (course_id, first_enrollmentcourse_id'ye göre sıralı)

Bölüm 3: GROUP BY + JOIN

  1. Her kurs için öğrencilerin ortalama yaşlarını bul. (course_name, avg_agecourse_id'ye göre sıralı)

  2. En genç öğrencinin yaşını getir. (Tek değer: MIN)

  3. Her derse kayıt olmuş öğrenci sayısını bul. (course_name, student_countcourse_id'ye göre sıralı)

  4. Kayıt olunmuş derslerin sadece isimlerini getir. (Tek sütun: course_namecourse_name'e göre sıralı, tekrarsız)


İpucu: Ayrı Schema Kullanmak

Localinizdeki PostgreSQL'de başka tablolarla karışmasın istiyorsanız:

CREATE SCHEMA data3;

Tablo ve sorguların başına schema adını ekleyin (data3.students, data3.courses vb.). Foreign key tanımlarında da schema adını unutmayın. Pushlarken schema öneki olmadan bırakın.

About

Data Science three SQL Project

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%