{"id":21547004,"url":"https://github.com/lexxai/goit_python_web_hw_06","last_synced_at":"2026-05-18T14:36:11.412Z","repository":{"id":196281015,"uuid":"695663324","full_name":"lexxai/goit_python_web_hw_06","owner":"lexxai","description":"GoIT, Python WEB, Homework number 06. SQL","archived":false,"fork":false,"pushed_at":"2023-09-25T16:00:55.000Z","size":74,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-24T09:23:17.475Z","etag":null,"topics":["docker","goit","homework","python","sql","sqlite3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lexxai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-09-23T21:04:59.000Z","updated_at":"2025-01-09T17:06:07.000Z","dependencies_parsed_at":"2023-09-24T03:05:54.162Z","dependency_job_id":null,"html_url":"https://github.com/lexxai/goit_python_web_hw_06","commit_stats":null,"previous_names":["lexxai/goit_python_web_hw_06"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lexxai%2Fgoit_python_web_hw_06","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lexxai%2Fgoit_python_web_hw_06/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lexxai%2Fgoit_python_web_hw_06/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lexxai%2Fgoit_python_web_hw_06/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lexxai","download_url":"https://codeload.github.com/lexxai/goit_python_web_hw_06/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244141582,"owners_count":20404835,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","goit","homework","python","sql","sqlite3"],"created_at":"2024-11-24T06:13:53.609Z","updated_at":"2025-10-29T17:47:45.829Z","avatar_url":"https://github.com/lexxai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# goit_python_web_hw_06\n\n## Завдання\n### Основне завдання\n\nРеалізуйте базу даних, схема якої містить:\n\n* Таблиця студентів;\n* Таблицю груп;\n* Таблицю викладачів;\n* Таблицю предметів із вказівкою викладача, який читає предмет;\n* Таблицю, де у кожного студента є оцінки з предметів із * зазначенням коли оцінку отримано;\n\nЗаповніть отриману базу даних випадковими даними (~30-50 студентів, 3 групи, 5-8 предметів, 3-5 викладачів, до 20 оцінок у кожного студента з усіх предметів). Використовуйте пакет Faker для наповнення.\n\nЗробити такі вибірки з отриманої бази даних:\n\n* Знайти 5 студентів із найбільшим середнім балом з усіх предметів.\n* Знайти студента із найвищим середнім балом з певного предмета.\n* Знайти середній бал у групах з певного предмета.\n* Знайти середній бал на потоці (по всій таблиці оцінок).\n* Знайти які курси читає певний викладач.\n* Знайти список студентів у певній групі.\n* Знайти оцінки студентів у окремій групі з певного предмета.\n* Знайти середній бал, який ставить певний викладач зі своїх предметів.\n* Знайти список курсів, які відвідує студент.\n* Список курсів, які певному студенту читає певний викладач.\n\nДля кожного запиту оформити окремий файл query_number.sql, де замість number підставити номер запиту. Файл містить SQL інструкцію, яку можна виконати як у терміналі бази даних, так і через cursor.execute(sql)\n\n### Додаткове завдання\n\nДля додаткового завдання зробіть такі запити підвищеної складності:\n\n* Середній бал, який певний викладач ставить певному студентові.\n* Оцінки студентів у певній групі з певного предмета на останньому занятті.\n\n\n\n## Рішення\n###  SQL таблиці\n\nТека \"sql\", файли:         \n* \"create_table_groups.sql\"\n* \"create_table_students.sql\"\n* \"create_table_disciplies.sql\"\n* \"create_table_teachers.sql\"\n* \"create_table_grade.sql\"\n\n#### SQL діаграма\n![Tables](doc/hw06-tables.png)\n\n### SEEDS DATA\n#### SELECT * FROM teachers \n```\nid|fullname          |\n--+------------------+\n 1|    Клавдія Девдюк|\n 2|    Тереза Фаренюк|\n 3| Клавдія Василенко|\n 4|Нестор Ємельяненко|\n 5|   Василина Масляк|\n 6|  Василина Хоменко|\n 7|   Олександр Корюк|\n 8|       Пилип Дацюк|\n 9|  Ярослава Балабан|\n10|      Маруся Чуйко|\n```\n\n### SELECT * FROM disciplines\n```\nid|name                  |teachers_id|\n--+----------------------+-----------+\n 1|           Python Core|          7|\n 2|            Python Web|         10|\n 3|   Python Data Science|          8|\n 4|       Вища математика|          6|\n 5|              HTML CSS|          7|\n 6|            Soft Skils|          4|\n 7|  Databases SQL, noSQL|         10|\n 8|               English|         10|\n 9|                   Git|          6|\n10|       Історія України|          9|\n11|Ділова українська мова|          3|\n12|             Філософія|          9|\n```\n\n#### SELECT * FROM groups \n```\nid|name   |\n--+-------+\n 1|M88-1/8|\n 2|M88-2/8|\n 3|M89-1/8|\n 4|M89-2/8|\n 5|C88-1/8|\n 6|C88-2/8|\n 7|C89-1/8|\n 8|C89-2/8|\n 9|P88-1/8|\n10|P88-2/8|\n11|P89-1/8|\n12|P89-2/8|\n```\n\n### SELECT * FROM students LIMIT 15\n```\nid|fullname          |group_id|\n--+------------------+--------+\n 1|  Святослава Чабан|      10|\n 2|      Зиновій Фурс|       4|\n 3|    Віктор Дараган|      11|\n 4|  Марія Прокопович|       6|\n 5|    Давид Вакарчук|       5|\n 6|    Лілія Гаврилів|       1|\n 7|Варфоломій Рябовіл|      10|\n 8|   Лілія Архипенко|       2|\n 9|    Дарина Арсенич|       8|\n10|    Орися Остапчук|       3|\n11|    Тереза Данилюк|       3|\n12|     Марія Балабан|       6|\n13|    Богданна Дрозд|       3|\n14|   Тимофій Євтушок|      12|\n15|     Альбіна Лесик|       2|\n```\n\n### SELECT count(*) FROM students\n```\ncount(*)|\n--------+\n     150|\n```\n\n\n### SELECT * FROM grade LIMIT 20\n\n```\nid|grade|disciplines_id|students_id|date_of   |\n--+-----+--------------+-----------+----------+\n 1|   45|             7|         41|2024-01-29|\n 2|   73|             7|        136|2024-01-29|\n 3|   88|             7|        106|2024-01-29|\n 4|   37|             7|         18|2024-01-29|\n 5|   52|             7|         50|2024-01-29|\n 6|   38|             7|        113|2024-01-29|\n 7|   63|             7|        130|2024-01-29|\n 8|   60|             7|        119|2024-01-29|\n 9|   61|             7|          9|2024-01-29|\n10|   43|             9|         90|2024-01-11|\n11|   78|             9|        104|2024-01-11|\n12|   61|             9|         55|2024-01-11|\n13|   50|             9|         67|2024-01-11|\n14|   72|             9|         85|2024-01-11|\n15|   90|             9|        134|2024-01-11|\n16|   55|             9|         79|2024-01-11|\n17|   44|             1|        127|2023-09-04|\n18|   94|             1|        150|2023-09-04|\n19|   89|             1|        131|2023-09-04|\n20|   61|             1|        132|2023-09-04|\n```\n\n### SELECT count(*) FROM grade\n```\ncount(*)|\n--------+\n    3075|\n```\n\n#### SHOW grades\n\n```\nSELECT g.id ,g.disciplines_id, d.name as discipline ,g.students_id ,s.fullname as student  ,\ns.group_id , gr.name as [group] ,g.date_of, g.grade \nFROM grade g \nJOIN students s ON g.students_id  = s.id \nJOIN groups gr ON s.group_id = gr.id \nJOIN disciplines d ON g.disciplines_id = d.id \nORDER BY g.date_of\nLIMIT 20\n```\n\n```\nid  |disciplines_id|discipline          |students_id|student           |group_id|group  |date_of   |grade|\n----+--------------+--------------------+-----------+------------------+--------+-------+----------+-----+\n1543|             9|                 Git|        117|         Сте Цісик|       3|M89-1/8|2023-04-21|   91|\n1544|             9|                 Git|         47|   Леонід Лубенець|       3|M89-1/8|2023-04-21|   56|\n1545|             9|                 Git|         23|     Юстина Швачко|       3|M89-1/8|2023-04-21|   43|\n2759|             7|Databases SQL, noSQL|        102|Ростислав Яременко|       7|C89-1/8|2023-04-21|   54|\n2760|             7|Databases SQL, noSQL|         37|      Климент Рева|       7|C89-1/8|2023-04-21|   44|\n2761|             7|Databases SQL, noSQL|        129|        Леон Ярема|       7|C89-1/8|2023-04-21|   60|\n2762|             7|Databases SQL, noSQL|        116|    Симон Проценко|       7|C89-1/8|2023-04-21|   37|\n2763|             7|Databases SQL, noSQL|        118|     Одарка Сагаль|       7|C89-1/8|2023-04-21|   51|\n2764|             7|Databases SQL, noSQL|         42|Юстина Безбородько|       7|C89-1/8|2023-04-21|   69|\n2765|             7|Databases SQL, noSQL|         86|   Варвара Царенко|       7|C89-1/8|2023-04-21|   69|\n2766|             7|Databases SQL, noSQL|        142|     Розалія Батюк|       7|C89-1/8|2023-04-21|   47|\n2767|             7|Databases SQL, noSQL|        145|   Марина Атаманюк|       7|C89-1/8|2023-04-21|   80|\n2768|             7|Databases SQL, noSQL|         33|     Одарка Шутько|       7|C89-1/8|2023-04-21|   42|\n 262|             4|     Вища математика|         63|   Олесь Дрозденко|       6|C88-2/8|2023-04-24|   73|\n 263|             4|     Вища математика|         27|    Ганна Павленко|       6|C88-2/8|2023-04-24|   87|\n 264|             4|     Вища математика|         52|      Марко Вергун|       6|C88-2/8|2023-04-24|   35|\n 265|             4|     Вища математика|        107|       Оксана Ткач|       6|C88-2/8|2023-04-24|   63|\n 423|             7|Databases SQL, noSQL|          4|  Михайлина Затула|       4|M89-2/8|2023-04-24|   48|\n 424|             7|Databases SQL, noSQL|         76|Михайлина Бевзенко|       4|M89-2/8|2023-04-24|   53|\n 425|             7|Databases SQL, noSQL|         14|   Теодор Товстуха|       4|M89-2/8|2023-04-24|   45|\n```\n\n### DOCKER \n#### BUILD\nscripts\\docker_build_image.cmd\n#### RUN\nscripts\\docker_run.cmd\n#### USE DOCKER HUB\ndocker pull lexxai/web_hw_06:latest\n#### LOAD FORM HUB\nscripts\\docker_load.cmd\n\n###  STATISTIC TASKS\n```\ndocker_run.cmd\n2023-09-25 00:56:21,163  create_tables\n2023-09-25 00:56:21,166  All 5 tables created\n2023-09-25 00:56:21,167  Get statitics\n2023-09-25 00:56:21,168  START TASK sql\\query_01.sql\n2023-09-25 00:56:21,170  START TASK sql\\query_02.sql\n2023-09-25 00:56:21,170  START TASK sql\\query_03.sql\n2023-09-25 00:56:21,170  START TASK sql\\query_04.sql\n2023-09-25 00:56:21,170  START TASK sql\\query_05.sql\n2023-09-25 00:56:21,170  START TASK sql\\query_06.sql\n2023-09-25 00:56:21,170  START TASK sql\\query_07.sql\n2023-09-25 00:56:21,170  START TASK sql\\query_08.sql\n2023-09-25 00:56:21,170  START TASK sql\\query_09.sql\n2023-09-25 00:56:21,185  START TASK sql\\query_10.sql\n2023-09-25 00:56:21,185  START TASK sql\\query_11.sql\n2023-09-25 00:56:21,185  START TASK sql\\query_12.sql\n2023-09-25 00:56:21,185  ALL TASKS FINISHED\nResult of statistics tasks:\n(\n    'TASK query_01:',\n    [\n        {'student': 'Ліза Височан', 'average_grade': 84.5},\n        {'student': 'Ліза Матяш', 'average_grade': 77.35},\n        {'student': 'Кирило Іваничук', 'average_grade': 76.69},\n        {'student': 'Ярина Габелко', 'average_grade': 74.48},\n        {'student': 'Клавдія Рябошапка', 'average_grade': 74.3}\n    ]\n)\n('TASK query_02:', [{'discipline': 'Python Web', 'student': 'Еріка Юрченко', 'average_garde': 100.0}])\n(\n    'TASK query_03:',\n    [\n        {'discipline': 'Python Web', 'group': 'C88-2/8', 'average_garde': 69.14},\n        {'discipline': 'Python Web', 'group': 'P88-2/8', 'average_garde': 69.07},\n        {'discipline': 'Python Web', 'group': 'M88-1/8', 'average_garde': 68.87},\n        {'discipline': 'Python Web', 'group': 'M89-2/8', 'average_garde': 68.0},\n        {'discipline': 'Python Web', 'group': 'P89-1/8', 'average_garde': 67.93},\n        {'discipline': 'Python Web', 'group': 'P89-2/8', 'average_garde': 67.81},\n        {'discipline': 'Python Web', 'group': 'M89-1/8', 'average_garde': 67.43},\n        {'discipline': 'Python Web', 'group': 'P88-1/8', 'average_garde': 64.95},\n        {'discipline': 'Python Web', 'group': 'C89-2/8', 'average_garde': 64.02},\n        {'discipline': 'Python Web', 'group': 'M88-2/8', 'average_garde': 64.0},\n        {'discipline': 'Python Web', 'group': 'C88-1/8', 'average_garde': 63.95},\n        {'discipline': 'Python Web', 'group': 'C89-1/8', 'average_garde': 61.68}\n    ]\n)\n('TASK query_04:', [{'average_garde': 65.23}])\n('TASK query_05:', [{'teacher': 'Левко Носенко', 'discipline': 'Python Data Science'}, {'teacher': 'Левко Носенко', 'discipline': 'Soft Skils'}])\n(\n    'TASK query_06:',\n    [\n        {'group': 'M88-1/8', 'student': 'Василина Асаула', 'last_name': 'Асаула'},\n        {'group': 'M88-1/8', 'student': 'Ада Гаєвський', 'last_name': 'Гаєвський'},\n        {'group': 'M88-1/8', 'student': 'Ростислав Гоголь', 'last_name': 'Гоголь'},\n        {'group': 'M88-1/8', 'student': 'Ольга Даниленко', 'last_name': 'Даниленко'},\n        {'group': 'M88-1/8', 'student': 'Ірена Карпа', 'last_name': 'Карпа'},\n        {'group': 'M88-1/8', 'student': 'Олена Лубенець', 'last_name': 'Лубенець'},\n        {'group': 'M88-1/8', 'student': 'Віра Масоха', 'last_name': 'Масоха'},\n        {'group': 'M88-1/8', 'student': 'Клавдія Цимбалюк', 'last_name': 'Цимбалюк'},\n        {'group': 'M88-1/8', 'student': 'Азар Чаленко', 'last_name': 'Чаленко'},\n        {'group': 'M88-1/8', 'student': 'Василина Черінько', 'last_name': 'Черінько'},\n        {'group': 'M88-1/8', 'student': 'Христина Ґалаґан', 'last_name': 'Ґалаґан'}\n    ]\n)\n(\n    'TASK query_07:',\n    [\n        {'student': 'Василина Черінько', 'discipline': 'Python Core', 'group': 'M88-1/8', 'grade': 100},\n        {'student': 'Ольга Даниленко', 'discipline': 'Python Core', 'group': 'M88-1/8', 'grade': 98},\n        {'student': 'Олена Лубенець', 'discipline': 'Python Core', 'group': 'M88-1/8', 'grade': 92},\n        {'student': 'Христина Ґалаґан', 'discipline': 'Python Core', 'group': 'M88-1/8', 'grade': 84},\n        {'student': 'Клавдія Цимбалюк', 'discipline': 'Python Core', 'group': 'M88-1/8', 'grade': 77},\n        {'student': 'Ада Гаєвський', 'discipline': 'Python Core', 'group': 'M88-1/8', 'grade': 75},\n        {'student': 'Ростислав Гоголь', 'discipline': 'Python Core', 'group': 'M88-1/8', 'grade': 66},\n        {'student': 'Віра Масоха', 'discipline': 'Python Core', 'group': 'M88-1/8', 'grade': 49},\n        {'student': 'Ірена Карпа', 'discipline': 'Python Core', 'group': 'M88-1/8', 'grade': 43},\n        {'student': 'Василина Асаула', 'discipline': 'Python Core', 'group': 'M88-1/8', 'grade': 30}\n    ]\n)\n(\n    'TASK query_08:',\n    [\n        {'teacher': 'Левко Носенко', 'discipline': 'Python Data Science', 'average_garde': 64.63},\n        {'teacher': 'Левко Носенко', 'discipline': 'Soft Skils', 'average_garde': 63.32}\n    ]\n)\n(\n    'TASK query_09:',\n    [\n        {'student': 'Вадим Шовкопляс', 'discipline': 'Databases SQL, noSQL'},\n        {'student': 'Вадим Шовкопляс', 'discipline': 'English'},\n        {'student': 'Вадим Шовкопляс', 'discipline': 'HTML CSS'},\n        {'student': 'Вадим Шовкопляс', 'discipline': 'Python Core'},\n        {'student': 'Вадим Шовкопляс', 'discipline': 'Python Data Science'},\n        {'student': 'Вадим Шовкопляс', 'discipline': 'Python Web'},\n        {'student': 'Вадим Шовкопляс', 'discipline': 'Soft Skils'},\n        {'student': 'Вадим Шовкопляс', 'discipline': 'Історія України'},\n        {'student': 'Вадим Шовкопляс', 'discipline': 'Вища математика'},\n        {'student': 'Вадим Шовкопляс', 'discipline': 'Філософія'}\n    ]\n)\n(\n    'TASK query_10:',\n    [\n        {'discipline': 'Python Data Science', 'student': 'Вадим Шовкопляс', 'teacher': 'Левко Носенко'},\n        {'discipline': 'Soft Skils', 'student': 'Вадим Шовкопляс', 'teacher': 'Левко Носенко'}\n    ]\n)\n(\n    'TASK query_11:',\n    [\n        {'discipline': 'Soft Skils', 'student': 'Вадим Шовкопляс', 'teacher': 'Левко Носенко', 'average_garde': 80.0},\n        {'discipline': 'Python Data Science', 'student': 'Вадим Шовкопляс', 'teacher': 'Левко Носенко', 'average_garde': 65.5}\n    ]\n)\n(\n    'TASK query_12:',\n    [\n        {'group': 'M89-1/8', 'discipline': 'Python Core', 'student': 'Омелян Пелех', 'teacher': 'Тереза Редько', 'grade': 92, 'date_of': '2023-09-13'},\n        {'group': 'M89-1/8', 'discipline': 'Python Core', 'student': 'Мирослав Мазур', 'teacher': 'Тереза Редько', 'grade': 55, 'date_of': '2023-09-13'},       \n        {'group': 'M89-1/8', 'discipline': 'Python Core', 'student': 'Павло Заєць', 'teacher': 'Тереза Редько', 'grade': 30, 'date_of': '2023-09-13'}\n    ]\n)\n\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flexxai%2Fgoit_python_web_hw_06","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flexxai%2Fgoit_python_web_hw_06","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flexxai%2Fgoit_python_web_hw_06/lists"}