Skip to content

sedefyuce/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

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%