Skip to content

Commit 42b7798

Browse files
add more queries to University
1 parent c76e42d commit 42b7798

File tree

1 file changed

+243
-2
lines changed

1 file changed

+243
-2
lines changed

short_tutorials/University.ipynb

Lines changed: 243 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
},
3131
"outputs": [],
3232
"source": [
33-
"schema = dj.schema('university')"
33+
"schema = dj.schema('university')\n"
3434
]
3535
},
3636
{
@@ -391,7 +391,6 @@
391391
"outputs": [],
392392
"source": [
393393
"# Enrollment \n",
394-
"\n",
395394
"terms = Term().fetch('KEY')\n",
396395
"quit_prob = 0.1\n",
397396
"for student in tqdm(Student.fetch('KEY')):\n",
@@ -406,6 +405,23 @@
406405
" random.sample(sections, random.randrange(min(5, len(sections)))))"
407406
]
408407
},
408+
{
409+
"cell_type": "code",
410+
"execution_count": null,
411+
"metadata": {},
412+
"outputs": [],
413+
"source": [
414+
"# assign random grades\n",
415+
"grades = LetterGrade.fetch('grade')\n",
416+
"\n",
417+
"grade_keys = Enroll.fetch('KEY')\n",
418+
"random.shuffle(grade_keys)\n",
419+
"grade_keys = grade_keys[:len(grade_keys)*9//10]\n",
420+
"\n",
421+
"Grade.insert({**key, 'grade':grade} \n",
422+
" for key, grade in zip(grade_keys, random.choices(grades, k=len(grade_keys))))"
423+
]
424+
},
409425
{
410426
"cell_type": "code",
411427
"execution_count": null,
@@ -422,6 +438,13 @@
422438
"# Queries"
423439
]
424440
},
441+
{
442+
"cell_type": "markdown",
443+
"metadata": {},
444+
"source": [
445+
"## Restriction"
446+
]
447+
},
425448
{
426449
"cell_type": "code",
427450
"execution_count": null,
@@ -500,6 +523,224 @@
500523
"millennials - Enroll"
501524
]
502525
},
526+
{
527+
"cell_type": "code",
528+
"execution_count": null,
529+
"metadata": {},
530+
"outputs": [],
531+
"source": [
532+
"# Students who have not taken classes\n",
533+
"Student - Enroll"
534+
]
535+
},
536+
{
537+
"cell_type": "code",
538+
"execution_count": null,
539+
"metadata": {},
540+
"outputs": [],
541+
"source": [
542+
"# Students who have taken Biology classes but no MATH courses\n",
543+
"(Student & (Enroll & 'dept=\"BIOL\"')) - (Enroll & 'dept=\"MATH\"')"
544+
]
545+
},
546+
{
547+
"cell_type": "code",
548+
"execution_count": null,
549+
"metadata": {},
550+
"outputs": [],
551+
"source": [
552+
"# Students who have not selected a major\n",
553+
"Student - StudentMajor"
554+
]
555+
},
556+
{
557+
"cell_type": "code",
558+
"execution_count": null,
559+
"metadata": {},
560+
"outputs": [],
561+
"source": [
562+
"# Students who are taking courses in the current term\n",
563+
"Student - (Enroll & CurrentTerm)"
564+
]
565+
},
566+
{
567+
"cell_type": "code",
568+
"execution_count": null,
569+
"metadata": {},
570+
"outputs": [],
571+
"source": [
572+
"# Ungraded courses\n",
573+
"Enroll - Grade"
574+
]
575+
},
576+
{
577+
"cell_type": "code",
578+
"execution_count": null,
579+
"metadata": {},
580+
"outputs": [],
581+
"source": [
582+
"# Ungraded courses in the current term\n",
583+
"(Enroll & CurrentTerm) - Grade"
584+
]
585+
},
586+
{
587+
"cell_type": "code",
588+
"execution_count": null,
589+
"metadata": {},
590+
"outputs": [],
591+
"source": [
592+
"# Students who have taken classes and have chosen a major\n",
593+
"(Student & Enroll & StudentMajor)"
594+
]
595+
},
596+
{
597+
"cell_type": "code",
598+
"execution_count": null,
599+
"metadata": {},
600+
"outputs": [],
601+
"source": [
602+
"#Students who have taken classes or have chosen a major\n",
603+
"Student & [Enroll, StudentMajor]"
604+
]
605+
},
606+
{
607+
"cell_type": "code",
608+
"execution_count": null,
609+
"metadata": {},
610+
"outputs": [],
611+
"source": [
612+
"# Enrollment in courses from the same department as the students' major\n",
613+
"Enroll & StudentMajor"
614+
]
615+
},
616+
{
617+
"cell_type": "markdown",
618+
"metadata": {},
619+
"source": [
620+
"## Join"
621+
]
622+
},
623+
{
624+
"cell_type": "code",
625+
"execution_count": null,
626+
"metadata": {},
627+
"outputs": [],
628+
"source": [
629+
"# Grade point values\n",
630+
"Grade * LetterGrade"
631+
]
632+
},
633+
{
634+
"cell_type": "code",
635+
"execution_count": null,
636+
"metadata": {},
637+
"outputs": [],
638+
"source": [
639+
"# Graded enrollments with complete course and student information\n",
640+
"Student * Enroll * Course * Section * Grade * LetterGrade"
641+
]
642+
},
643+
{
644+
"cell_type": "code",
645+
"execution_count": null,
646+
"metadata": {},
647+
"outputs": [],
648+
"source": [
649+
"# Enrollment with major information\n",
650+
"Enroll * StudentMajor.proj(major='dept')"
651+
]
652+
},
653+
{
654+
"cell_type": "code",
655+
"execution_count": null,
656+
"metadata": {},
657+
"outputs": [],
658+
"source": [
659+
"# Enrollment outside chosen major\n",
660+
"Enroll * StudentMajor.proj(major='dept') & 'major<>dept'"
661+
]
662+
},
663+
{
664+
"cell_type": "code",
665+
"execution_count": null,
666+
"metadata": {},
667+
"outputs": [],
668+
"source": [
669+
"# Enrollment not matching major \n",
670+
"Enroll - StudentMajor "
671+
]
672+
},
673+
{
674+
"cell_type": "code",
675+
"execution_count": null,
676+
"metadata": {},
677+
"outputs": [],
678+
"source": [
679+
"# Total grade points\n",
680+
"(Course * Grade * LetterGrade).proj(total='points*credits')"
681+
]
682+
},
683+
{
684+
"cell_type": "markdown",
685+
"metadata": {},
686+
"source": [
687+
"## Aggr"
688+
]
689+
},
690+
{
691+
"cell_type": "code",
692+
"execution_count": null,
693+
"metadata": {},
694+
"outputs": [],
695+
"source": [
696+
"# Students in each section\n",
697+
"Section.aggr(Enroll, n='count(*)')"
698+
]
699+
},
700+
{
701+
"cell_type": "code",
702+
"execution_count": null,
703+
"metadata": {},
704+
"outputs": [],
705+
"source": [
706+
"# Average grade in each course\n",
707+
"Course.aggr(Grade*LetterGrade, avg_grade='avg(points)')"
708+
]
709+
},
710+
{
711+
"cell_type": "code",
712+
"execution_count": null,
713+
"metadata": {},
714+
"outputs": [],
715+
"source": [
716+
"# Fraction graded in each section\n",
717+
"(Section.aggr(Enroll,n='count(*)') * Section.aggr(Grade, m='count(*)')).proj(\n",
718+
" 'm','n',frac='m/n')"
719+
]
720+
},
721+
{
722+
"cell_type": "code",
723+
"execution_count": null,
724+
"metadata": {},
725+
"outputs": [],
726+
"source": [
727+
"# Student GPA\n",
728+
"Student.aggr(Course * Grade * LetterGrade, \n",
729+
" gpa='sum(points*credits)/sum(credits)')"
730+
]
731+
},
732+
{
733+
"cell_type": "code",
734+
"execution_count": null,
735+
"metadata": {},
736+
"outputs": [],
737+
"source": [
738+
"# Average GPA for each major\n",
739+
"gpa = Student.aggr(Course * Grade * LetterGrade,\n",
740+
" gpa='sum(points*credits)/sum(credits)')\n",
741+
"Department.aggr(StudentMajor*gpa, avg_gpa='avg(gpa)')"
742+
]
743+
},
503744
{
504745
"cell_type": "code",
505746
"execution_count": null,

0 commit comments

Comments
 (0)