- Projeyi fork edin ve kendi hesabınıza clone edin.
- Terminal'de proje klasörüne girin.
python -m venv venv
source venv/bin/activate
pip install -r requirements.txtpython -m venv venv
venv\Scripts\activate
pip install -r requirements.txt- PostgreSQL'in bilgisayarınızda kurulu ve çalışır durumda olduğundan emin olun.
scripts/init_db.pydosyasındaki SQL komutlarını sırasıyla kendi local veritabanınızda çalıştırın.- Tabloların doğru oluştuğundan emin olmak için her tabloya birer
SELECT *sorgusu atın.
Not:
data/question.pyiçindekiconnect_db()fonksiyonunda veritabanı bağlantı bilgileri var. Localinizde test ederken kendi bilgilerinizle değiştirin. Pushlarken bu bilgileri varsayılan haliyle bırakın.
tests/test_question.py— Dosyanın altındakirun_tests()fonksiyonundauser_iddeğerini kendi kullanıcı ID'nizle değiştirin.data/question.py—connect_db()fonksiyonundaki veritabanı şifresini kendi local PostgreSQL şifrenizle değiştirin. Pushlarken varsayılan haliyle bırakın.
- Sadece
data/question.pydosyasında çalışın. - Her fonksiyon içindeki boş
cursor.execute('')satırına SQL sorgunuzu yazın. - Diğer dosyaları değiştirmeyin.
python watch.pyTek seferlik:
pytest tests/test_question.py -s -v| Sütun | Tip |
|---|---|
| student_id | SERIAL (PK) |
| first_name | VARCHAR(50) |
| last_name | VARCHAR(50) |
| age | INT |
| city | VARCHAR(50) |
| Sütun | Tip |
|---|---|
| course_id | SERIAL (PK) |
| course_name | VARCHAR(100) |
| category | VARCHAR(50) |
| Sütun | Tip |
|---|---|
| enrollment_id | SERIAL (PK) |
| student_id | INT (FK -> students) |
| course_id | INT (FK -> courses) |
| enrollment_date | DATE |
-
DATE_TRUNCile ay bazlı kayıt sayılarını listele. (month,count— aya göre sıralı) -
DATE_PARTile kayıtların sadece yıl bilgisini al. (Tek sütun:year)
-
Tüm öğrencilerin yaşlarının toplamını döndür. (Tek değer:
SUM) -
Toplam kurs sayısını bul. (
SELECT COUNT(course_id) ...— tek satır döner) -
Yaşı ortalama yaştan büyük olan öğrencileri getir. (Tüm sütunlar,
student_id'ye göre sıralı) -
Her kursun en eski kayıt tarihini bul. (
course_id,first_enrollment—course_id'ye göre sıralı)
-
Her kurs için öğrencilerin ortalama yaşlarını bul. (
course_name,avg_age—course_id'ye göre sıralı) -
En genç öğrencinin yaşını getir. (Tek değer:
MIN) -
Her derse kayıt olmuş öğrenci sayısını bul. (
course_name,student_count—course_id'ye göre sıralı) -
Kayıt olunmuş derslerin sadece isimlerini getir. (Tek sütun:
course_name—course_name'e göre sıralı, tekrarsız)
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.