{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "2b042b9b-8521-4493-bfde-8f2c3b2112d3",
   "metadata": {},
   "source": [
    "# OLAP Support in SQL"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b6ebefb6-527c-450c-9359-ef2274b0875c",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from pandas import DataFrame\n",
    "from DATA225utils import make_connection, dataframe_query\n",
    "\n",
    "pd.set_option('display.max_rows', None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b2d986ce-e03a-46ba-ae30-3d3053152734",
   "metadata": {},
   "outputs": [],
   "source": [
    "conn = make_connection(config_file='students.ini')\n",
    "cursor = conn.cursor()"
   ]
  },
  {
   "attachments": {
    "a03645a8-5920-4631-8462-b4fca8b8c174.png": {
     "image/png": "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7fp77xfJFiUCiUAikAgkAolAIpAIjCQCDz/8cLXvvvtWN9xwQ/W73/2u+r//+7+RrC7LnsAI/NUEfvZx9+iI6//8z/9Uv/3tb6v/+q//qj70oQ9Vf/u3f9vV51T/L3/5y+qPf/xjNWnSpOqv/ipfsa7+AFlZIpAIJAKJQCKQCCQCExyBZ555pjr55JOrv/iLv6jmnXfe6t3vfvcERyQff6QQSM/0SCE7CuUisj//+c+ro48+utppp52q559/vqutYPV76aWXqsMOO6zaY489iiWwqw3IyhKBRCARSAQSgUQgEUgEJjwCnDnvete7ilMJoR6t1E6EZjt5Rqv9We/ACKTbcGCMxkwOnfG///u/C6FmkeOdbje5t905Jn3lDWGF0Id3eiTqb7fMzJcIJAKJQCKQCCQCiUAiMP4QoGfed999xXHEmfPP//zP1TzzzFN94hOfmE6g6aV0W4f/I3rykUceqX7xi19Uf/jDH6p//Md/rD7+8Y9Xn/70p2eI5lT+448/Xv3kJz+p/vM//7N673vfW80///yljne+852lTPf/8Ic/rJ566qlSnjo+8pGPVIsuumj1wQ9+sERnqlu+n/3sZ6U8OrJzs802WzX33HNXH/vYx6ZHcdLbX3jhhUr75NPef/qnf6o++clPVvPNN1+5b/z9kmP/iZJM98BviJzqMA4CQSf7y7/8y+qv//qvy6fv0v/+7/+WPEKo3aPTNufz/e///u9LOIv/I7nXfeqIe1ntHPKpQx4dPr7L65xr2lLPG+1RpkMe5SLzhIxwGu2LpCz5lCfJ31x/tM95SVv8r+56WeVi/kkEEoFEIBFIBBKBRCARmFAI0DXNgb733nurU045pXryySeL/jnnnHNWK664Yvn/U5/6VNFlAxg6pwOBvv3226vrr7++kOA333yzmnXWWaull166et/73lf967/+a9E333jjjcqc64svvrh64IEHqldeeaV6//vfX62zzjpFL0WC/+Zv/qYQ35tuuqlyPP3000XHRXzp8osvvngh+NqAmN94443lQL7ptoj/csstV6211lrVhz/84dJUEaV33313ad9jjz1Wace//Mu/VGuvvXaZujnLLLOU54jnys/eQCDJdA/8Dojm5ZdfXjrPT3/609KhF1xwwWq11Var5pprrkJONZNV64orrqh+8IMflHBqAmDhhReuVlhhhWLZ6o9wsqzddddd1S233FLmVLOYLbvsstUSSyxRhIfyf/zjH1fnnHNORQi5Tog8++yzJUxm+eWXr5ZccsnSHgIJ8dXplTd16tRCfFkDWfZ0/iDEykWg77zzznKwtnnesNypn1VOIriuvvrqYtEjiC699NLyPxxYDutllhvyTyKQCCQCiUAikAgkAonAhEGADnnGGWcUMs1b/OUvf7kQ3fvvv7/ombzE3/rWt6q/+7u/m45J6Me33XZbddZZZxXdEokVBu4c/dpCZausskohr3fccUch0e95z3uqPffcs3isH3zwwaJ/y3vkkUcWPRiJ/tWvflXK++IXv1hNmzatevTRR6sTTzyxeu2116ptt922+vWvf13KPvvss4uHmU4700wzFZ38wgsvLDq+c3T6a665pvIcyyyzTLXxxhtXr776anXddddV6vasK620Umnf9AfLf3oCgSTTo/wzsHYJU0FIhWbzwuqADz30ULGuCS1h3WJN08FYyF5++eWS7/XXXy+hIDy46667bjWpseBXJIQ3hMdvfvOb6nvf+17puOqT1OEcoURYsHa55px2sLopn9WOIECQeZ3nmGOOUrc2XHbZZaVNL774YhFIhIgyWOCE22iD5PrNN99cBIw2seaZW01oEHYf/ehHS16hLayFPv/hH/6hEHkWPlbITIlAIpAIJAKJQCKQCCQCExuB0FXppttvv31xPCGaDo4pOid9NXRQn6FH0kHDmYSwisRUHh2Vfs2ZxNnzox/9qDiYZp555kKUhYHPPvvsxalDN+bcoZcjzgjvYostVq255pqlLF5m7RClKX3/+98vziILAnMgbbDBBkXH5WjisKLv8z5rFy87j7Q8vNbuwQsQeG3naMrUewgkmR7l30SHPeqoowrBXH311Qsp5p1GNK+88spCZnVSHl2kW8deb731ikdap5PnzDPPLOEiyHQID49FSCDa7kN8/b/bbruVvOZiHHjggcUTLHSFENBRkWzEHsneZZddSkfmVQ4r3JQpUwr51sYTTjiheIw33XTTslKiZ/nud79bBAzBoH6JsNB+Vjf1f+ADHyjWw7322quErSyyyCJFeBF2hBorHI88CyFvuPZFWaXA/JMIJAKJQCKQCCQCiUAiMKEQEBXJYSPa0o41vLccQhLvLpKL4JpqSI+N5D7OIXOZOYU+85nPFL3SeV5i+em1dGB6tHv9T29WHzK90EILlTo5l+jidHBl2kGHE4jjin5Ll+eQovOaAy2s3HXn6fO84dICCyxQnGPCus3Nnjx5cmmTMunN9GAOJcRancri+MrUewgkmR7l30RoNWvYVlttVW244YYl5Jl1iiXq97///XQhIcz5c5/7XLGMsZzx6PLw6qQ6HU+vhJASBA5lEA7CUJRp4QQhIjoysrvGGmsUYaAjEzAhQHRe+cznUK/8F1xwQenIhIWOzkrG6iYcXaiM8uXzPKx2BJS2sLwRVAi3Oi2gIPFGE4AseoQiSyCLm0O4uLByglE+z6ltmRKBRCARSAQSgUQgEUgEJiYC9Eth1fRP+mkQaWgg0nRZJJSXGhGW6KIcMvRmnl7kmF7Ms42gKtOBQNNd6ZymT7pmKuPXvva16rTTTivlIuF0ZAnBXnXVVatLLrmklGeqommLrtO3zb+mAyPbvM30XdM0zc2m69LbedFdN99bG+m9vOraR7+nG0d5dP/wdpcG5J+eQSDJ9Cj9FDoSL6yOhDQjkEJIJBYvHlmdOyxYVvPT0QgOoSUIrcMiDDq8ztecCBakV+fVwZFa5FoZOrGyCQ/WNXXxTEs6rPASHmEkloXNqoNCzgkDc6WnNUK6WfcQfCRZIlgIoJgXHQKM4GCB88y81+oRSk4oEDRCxuWVPCOCrhz7AmZKBBKBRCARSAQSgUQgEUgE6IwOxJgOSa8M3RU6SHTsJ+2aRI+lYyLXHD7mQ5tXTZ91zbRCuqcj7qGH8kzHFEu6M70XkY+VvXmh6ery0Odj5W86su90brozPfs//uM/iudamXRzSZuQe/p5TI1UHkJv/SK6OV35ueeeK7q+52UoUG6m3kIgyfQo/R46EUKLCOtEQZqjOSxjLF46t87Oy8yadtxxxxWyqkNOaoR168SS/M3JfTqlenivhWsTQASP8zq3diDxBIj8ks4tXySCQP3Ou48nGUnnNRbGEolAYonT0QkSZUuegYXt1ltvLcIm2soQ4BkIFnVHG3i5lev+aFPUkZ+JQCKQCCQCiUAikAgkAhMPAWTZnGS6Mx2yOVlRe1qD9HLI0FslOqj8iKmpkRYc++pXv1pNboRV0z+RVhGa5jbTdyX5EWqL6iLdyLS5zRbJ5YHmLeaYohdPaUx/FIrN022lbquMm/JIf91xxx3LJ6fUJptsUqZoaj9dOhKSbxce53zGgr8iQTmgrAKubo6nz3/+86VNcW9+9gYCSaZH6XfQyRBoliYdKYhnvTk6sI7KU40IEwCSeRsEyqQGEWVhQ5RZ6lolnVPZPN88yeZbECwSQYPYsq4h9OaZSK6H5cz3ILXaHP8j5P53RNIGgggpdl05wlesIs5brUzh4zzens2Cap4vyohP57TL9yTTgW5+JgKJQCKQCCQCiUAiMHERoLdyuPA+i+rk3KHbStMaJJq+6dNON81kWl7OJQ4fUZV0aIl+ylklhWPLzjmIrV1vOJwc8tO5EVvRoEi4+iwSjFyLIEWa6brnnntuieKkgzuP+NN7OYq0X+J0Ms2TzkwH58Syojgiv+WWW5YwdpGfolCFfYc3vdycf3oKgSTTo/RzIIk6GGIpZISnuZ50sqmNhcAijMQq17y7e++9d5lTEXvSKcd8jbqVK8pBRnVqBNqiB/bHM58kEuJLGCHBBFN9fknkiU9l6fCSdgt1eeKJJ4pgijw83Yi9kHH1OhB0bbd4gtDxHXbYoZBsQs2CDPIou06ctSfqirLzMxFIBBKBRCARSAQSgURgYiPAmcRBZCFdEY+cN4gvh5MtpOiTdOK6M4ZeSd+l69KfQ9/l8DEVMvZ+pnsivlb3RpgRW8Tc3GUkWNi2iFBOHyHjVu3mkUaUTZFE1OW1OJo2Sc4j8Yi36ZAWItO+q666qtyPSNsf2z3OIc2mObpPu7VXvXTrcIZN7Deg954+yfQo/SY6OSKpcxIMhILQaVYoxJr1i5CwCJgFD4R3SOZTBJEWziLcRIqwbOUSJJJOiKyz2iGvBEaQaXns06dOHXnzzTdvGSpeCvrzH0LGfYQB4mwfamHdzqnXOR50JDk2vidkCB7CiEc9BIE8ESpD4NSFXr3O/D8RSAQSgUQgEUgEEoFEIBGAgMhFziEh21//+tfL4mDW5qEn0zXXXnvt4tWlk9KnOXOQaE4lDh5bwArzNjURwaZ3T2p4nXl/kWh6s22zfN9jjz3KPGWOLWUhwULILX5Gd+UkuvTSS8sivdYG4qTiSUb2hYmLLLUzDfJ+/PHHV4cddlj5pE9rn3YrTzn0eGHlSPqURug4Us6Tbc60T4v9ml+dqfcQSDI9yr8Ja5MQEZ3FVlMEAaJp5T/EUwdidWOxErpiLoZFy3RWczgQVR1Q5xNygtjqpK7rvAQEocDaZVVCHZegcB9BRMDonMJhkG/3EQbKieR/FjrX5OGZRpbVywpIQCD42iVUhuCSXzt4xbWdVc6cFNeU7z6WPefNU0HyQwgRVvX6ox35mQgkAolAIpAIJAKJQCIwcRGgG3/2s58tUZ10SN5j4dl0Tfo0x41EL11//fWLl5fTyhxn1zl56LN0TTox0ksHpmvTyemmtmylx9JpkXf6KX2Zg8s1HmhEGQmmi5vbrDyOIfVqnxW9fadzu4eeL5/IU8+AcCPgQs6VLS211FKlXpGo9G1Jm5BszjQkPlPvIZBkepR/ExYxixIcc8wxZb9pXmKdD4neeeedq5VXXrkIAB0MWWWF08F4tGMBBKv7BTk1J5m1jGDQsQkQW2AJYbF3NWscwWOutjLMB9loo43Kd/kJDR7zetIe5Tn8r/wwAtgTetdddy1tjD3xCCeCQnkEgMUUjj322BLuPenPc1QINSTf3BNEn8BTNiGmfv9nSgQSgUQgEUgEEoFEIBFIBAIBpJf+Sm/kreUxDucNPTUSUo2syh86pa2neIKR5IgODX2ZriwvPZQuzDPsHN2bTktf50Sql0fHPfzww8v6QDzjPNjapmz5IplLfdBBB5UVvYWEaw+SLX89IdbCu0WL8lwrRzt40TmZ4jnq9+T/o4/AOxo/zlsuyNFvz4RrAcKpYyHDvMuIMrLK+yu8O0K6eZLNoxDaLQ+LmA6mg5tHwQuNxLKasZKZ07zEEksUMk3ICG3huVYOMq1j8kiblyFsWyIw7rnnnnIeMUa4dVxtNNeDZU4nJyj8j6Arl7WNgNEeHmsrEBJGDACElBB2IeasgdrLAsdjTYhoK0FoDom543Cw356VwqP+CfdS5AMnAolAIpAIJAKJwJhCIMnOmPq5srGJQJ8IDLYvJ5nuE8rRuYD41q1Zza3o7wfu71qUY34IIoyoIrydSEJhWM8Q5YFSeMUHypfXE4FEIBFIBBKBRCARGEsI0HGmNabkcQ5k6g4CnD4O+nO7KfTs+j3h9aVLR3Kunrd+rZ4n2uB6vczIE5/Kinrka1WevO3mi3LzszMI4DGmCzRHDAxUettk2g8eL8BAheb1RCAR6G0Esj/39u+TrUsEEoFEIBEYewjYy9jUPVF74bBI3Xns/Y7Z4omFQBhBRNMefPDBZZrtYBCYcXJsP3eGMDBH9r777iuhv6wqcb6fW/NSmwjA0uFHdTSnuO58PU/9N2h1X5QjX1jY4v7+8sd9/X321abme6KNPqNueeL++rnme/N7ZxDw25u3Y56RyIRMiUAikAgkAolAItAeArGas7mufSXRf7YNNe3OejT05FhIqq978nwikAiMLgKmqloczj7fpqYONrVNpqPgc845p7roootKSC8GP1wyFuXmZyKQCIwcAvqpefUWy7AARysyHSFH7YTrj1xLs+REIBFIBBKBRKD3ELBolTVhrA1jVeVW46hWW7yK0drCspkSgURgbCBgzaapU6cOidcOmkybB2IJensUW8DKanOZEoFEoHcRYHHTb7fbbruyp2JfBjCL1pn/bsXKiGDo3afKliUCiUAikAgkAt1DgMfq2muvrYRyI8vbbLNNy8pF3DFOZ0oEEoGxg4DFlqWIpB1MywdNpiniLHK2bLIidKZEIBEYGwggyT/72c/e1lj7mtvr26rytmazKnuS6bfBlCcSgUQgEUgEJjACFhezI8rNN99cFl21u4loL1Gazake2s1Q/fDDDxcl3U4tplu1uqe5jPyeCCQC3UPA4sx9OZsGasVbm6ANlPPP1ynZ2Pvvfve7Nu/IbIlAIjDaCLCSC/NuZXGjGOy4447VeeedV1YhTYv6aP9aWX8ikAgkAolAryFg29L3vOc9ZStQ24V+4xvfKFuEDtRORHqnnXaqvvjFL1ZnnnlmrvQ9EGB5PREYYwgMmkw3P5/w0SOPPLIo40cccUTZB7k5T35PBBKB3kMAab7kkkuq888/v+KdZkm3xVmmRCARSAQSgUQgEZgRAc4kY6TPN954o3rggQeq448/vrrppptmzNj0jceLA0r0F515pAzWfXnV+jrf1Mz8mggkAkNEYNias7CXq6++urrnnnuqhRdeuJp//vmrT3ziE0NsTt6WCCQCI4kAJSDCy6zKb0FBFnbJtA3zqzMlAolAIpAIJAKJwIwIiOwyhsYincK36b8M0aZIzTPPPGXxMfnqBNY9tsly3vgb9yPXSLa8xt+ZZ5653P/mm28W4m31cEQcgbdWkSmWxmhk/KWXXir3WgTtve99b/GYK9+6J6+88kpZz8h99syNLbpmfJr8lggkAp1CYNhkWufVUXVwn4TGSCTCRl2ZEoFEYOgIGFytNHrbbbdVhx9+eNkL08AdJNsgn/1s6PjmnYlAIpAIJAITAwFEFyE2nvJU259WKHhfY6jzMdYivN/73vfKAa1FFlmkWn311Stzqm3Rg6TfcssthRgjy5/5zGeqrbfeujisEGa76tiq1sriq666ajmUI8pMtNkPfvCDapZZZqn222+/sqioa5kSgURgZBAYNpmOZoXwoKhLVj0kEFjuPvjBD1Yf//jHq49+9KNlNeFnn322euihh6qXX365CJ1ZZ521mm+++ap555233PvTn/60eMso/u6xwENY4x5//PHK/Sx2n/vc54olsNyUfxKBRKBfBBi7bOthoLXgmMFWP5L03+jD/RaSFxOBRCARSAQSgQmIAO8wHTfGSk4ea5HYMguxNrYivvaaDl24DhMi7Z7XX3+9uvfee6vTTjut6LOf/exnqznmmKN4p5988snqpJNOqu6+++6iP88000zFy/ziiy8Wj/Q666xTTZ48uXig6cNPPfVU8Yoj1BK92l65zz33XLXQQgvN4CGvtyX/TwQSgc4h0BEyHYp4fBIkt956a3X99deXlQ+XWWaZikCYbbbZymIN11xzTXXFFVeUa0JerB681lprVe9+97tLnmnTplUnnHBCEU5LL710IdTItIXPLJbkflZAFkBhNZkSgURgYASEg/36178uA7UBV3hZfcVRJUQfHri0zJEIJAKJQCKQCPQOAnREUw8dxjbjWScSxw4SbCVvBujmOc+INEO1NUjkRbBb7UGNTNtOljOJHsujzdFkiiSC7BoSfdZZZ5VmI8OcSc8//3x1++23l0VC1bXEEkuU8G2LoSHTP/7xj8szq1M7HnvssaIf28GD7pwpEUgERhaBjpBpTSQkCK4QFMcee2yxuCG7yDSBQBCxuCHS8iPXLH0//OEPq9NPP71s27P//vsXT7Yyn3jiiSKYtt9+e1+LcORNszLiXHPNVYRFuZB/EoFEoF8E9DeDvGTgFSbWTKQZtszbinz9FpgXE4FEoOsIBEHQn8dr6mtKV1/nxysO+VztIVB/L3hjr7rqquryyy8vBLTTRNKUKDquozkhufafjnE15kXLF0ZqbZXnW9/6VsVpNGnSpGqPPfYoziR9WsQYMo2Mr7nmmtXuu+9ezTnnnNWDDz5YplFyUNGLRW8K4Ua2jeeM5Ei1KE9Rodr5yU9+slpggQVakvrmtuf3RCARGB4CHSPTmkFBnzp1aglxEeL9sY99rFpjjTXKXA/XrXx45513ljkgG220UbXooosWxf2CCy4oBFloyiabbFJItnkgrGss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mbxXSgiEwPgl0H7P4/cJ0vMQCIEQCIEQCIEQCIEQmLcE3rij+yB9STr3IHByKgTGGYH8nsfZHyzdDYEQCIEQCIEQCIEQmO8IDFtMz3c9T4dCIARCIARCIARCIARCYAIQeDO3rhzOvYZTZwJgzyOEwKgJDDvNe9R3SgMhEAIhEAIhEAIhEAIhsAAReOaZZ8q9995bJk2aVKxbctddd5W//e1v5R3veEdZZpllypJLLlm3mpUxZteZl156qTz22GNl9uzZdRta9T760Y+W5ZdfvnzgAx+o5LT517/+tbb3yiuvlOeee648//zzdRrmJz7xibLIIosUx+++++7ahu8rr7xybccipO5FLD/99NPlkUceqbv02ELTlrNLL710WWKJJWr/FqA/Ux41BEZMIGJ6xOhyYQiEQAiEQAiEQAiEQAgMTOD+++8vP/zhD+tuGosuumg56aSTykMPPVQXA91mm23K9ttvX6ZOnVobePXVV8sdd9xRLrroojJz5swqdt/znveU1VZbrey9995lww03LG9961vLgw8+WK677rpi60ui+uGHH66C/X3ve1/ZeuutqyB+8cUXy8knn1xFOSF/wAEHlC222KIKamKaoLdl5oUXXlhuvPHG8vrrr1dxv+WWW9Y+EeUpIRACQxOImB6aUWqEQAiEQAiEQAiEQAiEQM8E/vGPf9To77PPPltWXXXVMm3atGJ7WdHqCy64oPz73/8u66+/fhXGTz75ZDnqqKOK6PGOO+5YPvzhD5fHH3+8RrMJX+J5gw02KKLIjz76aLntttvKRz7ykbL22mvXyLMo82mnnVbe+973VmG8ww47VEFOfF999dVViO++++5Fn66//vpywgknlLe//e3FMVFvbZ577rn1GV07efLkes+eHzoXhMACRCBiegH6Y+dRQyAEQiAEQiAEQiAE3jwCUrdFnKVVv/vd7y6i0VK3r7rqqnLZZZfVVGyp3e9///vLv/71r/LPf/6zfOpTnyq77LJLWWqppcott9xS07Dvu+++KpLXXXfdmqatTeneyy67bNlss82q8BZlPvXUU2tb0rq32267muYt0n3FFVdUwUw4E9fEtNTwTTfdtOy1115VlOsPgX7nnXfW79LLCfiUEAiBgQlkAbKB2eRMCIRACIRACIRACIRACIyYADH9lre8pUifnjFjRll88cXri4hdbrnlahT6L3/5S40WL7bYYuXggw8uu+22WxXSbvrOd76zpmYT3CLXItleCy20UCGstSMy/bGPfawKa5Fqke5tt922fPzjHy+f/OQny3rrrVf7ICKu3HrrrTWdnAiXZm6ONNG8yiqrlJ133rnO3b755pvLa6+9VuvnPyEQAgMTyHDTwGxyJgRCIARCIARCIARCIARGTKCtim2+NNEqrVpZeOGF64vQlnbtnUD2Lor81FNP1eMvvPBCXWDMHGdttRfxS3x/6EMfqpFqbWrbImciylOmTKntmQv9rne9qwpwn82X1qa53C+//HIV6Oeff369r0j17L6Fz6SWr7TSSlVUazclBEJgYAIR0wOzyZkQCIEQCIEQCIEQCIEQGDGBJqaJXy/fCVop3RYT8xK9dlzkWNTY4mIWKVNHSrjVuEWjXd9W4vZOfJtf3Yp2HCeeLVymTW047vpWzLl2LynlhLN2FfWJeenoBLm+pYRACAxOIGJ6cD45GwIhEAIhEAIhEAIhEAKjJkDodhfiVbFN1U033VRX4F5nnXXKV7/61bpVlW2vrPBtATGRZYJ3qKJOp3juru8csWwxNCni0sFbfQKa2CbUieqUEAiBwQlETA/OJ2dDIARCIARCIARCIARCYK4QaGLafGircdsf2v7TtsFSzKe2kjch3aLb7ZpeO0Rke1m520rhin2u7WHdigXI2oJpwxHu7bq8h8CCSiBiekH9y+e5QyAEQiAEQiAEQiAE5gsCFhgTERYl/uAHPzinT6LSVt62nzRx29K251To+NDEcsehN3wUfVbHHtKT+7a9mjVrVl21uy2EZm/ro48+us67triZRc0608jf0Fi+hEAIVAIR0/kfIQRCIARCIARCIARCIATmAgER5RdffLEuJtZSqd3GZwLaeSLaqtui0r/97W/LMcccU2688ca6QJgFxQhfc6hvuOGGOp/6scceqytti1AT1620udDaMU+6FXUsYOblvlb39vnII48sxx13XN2ii8h2zGJo06dPL5tvvnmdr93ayHsIhED/BCKm++eSoyEQAiEQAiEQAiEQAiEwKgLmJtsWy37QbSVvDRLJor9St+0xPWnSpLogmGNPPPFEfRHa9oteY401qngmkB2Tpm0bK21Y0bsVEW0ieMUVV6xznh03B9rxjTbaaM7K3+ZDmyttP2n7WEsxJ7i167i6VgNPCYEQGJrA//SNRA29ksHQ7aRGCIRACIRACIRACIRACCywBKRkE6L2av7lL39ZOYgWWzVbujTx2xYh436LAitENtEramxv52eeeab8/e9/L7bTsiq3c6LG2rKlFgHe5k0711bj7ryX+6njPtrVB9/tW604Rphb4MzLd6uGE//qtPZr5fwnBCY4ASvo23f9y1/+cjnssMN6etpEpnvClcohEAIhEAIhEAIhEAIhMDwChC4B3FkI3La1VefxJnaldYsUd85Xtp/0YEWb/d3LfQhu22W1oq572XbL3tei2451Rs5b3byHQAgMTiBienA+ORsCIRACIRACIRACIRACwybQos8DXTDUedd1CumB2uk8Ppw2W/3uuiLmKSGwIBMYTSbG/21utyDTy7OHQAiEQAiEQAiEQAiEwBgQEOGNOB0DkGkiBN5EAjI3DDL5/fZaEpnulVjqh0AIhEAIhEAIhEAIhEA/BKRnX3755eVnP/tZnYdsHnNKCITA/EuAkL799tvrGgbdWRvD6XXE9HAopU4IhEAIhEAIhEAIhEAIDEJARHrxxRcvDzzwQDnooIPmLDY2yCU5FQIhMI8JiEa3iLQV7XstWc27V2KpHwIhEAIhEAIhEAIhEAJdBF5++eVy8803lxdeeKHrTL6GQAjMrwQIaRFp6xTY733ppZfuqasR0z3hSuUQCIEQCIEQCIEQCIEQeCOB5pC/8Wi+hUAIjDcCvf6WI6bH2184/Q2BEAiBEAiBEAiBEAiBEAiBEJjnBLKa9zz/E6QDIRACIRACIRACIRACIRACIRAC441AxPR4+4ulvyEQAiEQAiEQAiEQAiEQAiEQAvOcQMT0PP8TpAMhEAIhEAIhEAIhEAIhEAIhEALjjUDE9Hj7i6W/IRACIRACIRACIRACIRACIRAC85xAxPQ8/xOkAyEQAiEQAiEQAiEQAiEQAiEQAuONwP8Cj8CQONFYnd0AAAAASUVORK5CYII="
    }
   },
   "cell_type": "markdown",
   "id": "97344e74-d2be-495e-9545-f71e6221eb8e",
   "metadata": {},
   "source": [
    "![Screenshot 2023-04-24 at 1.04.51 AM.png](attachment:a03645a8-5920-4631-8462-b4fca8b8c174.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7489fa6-c807-4239-b166-cc0e128e448e",
   "metadata": {},
   "source": [
    "## `calendar` dimension\n",
    "#### Hierarchy: `school_year`, `semester`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1fde8424-9132-4edb-9e55-b296ea507d93",
   "metadata": {},
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, 'SELECT * FROM calendar')\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0776a17a-9a58-493f-9040-056ad2bf0061",
   "metadata": {},
   "source": [
    "## `classes` dimension\n",
    "#### Hierarchy: `school`, `department`, `level`, `class`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7185ca23-37a4-4bf4-9c8d-bff45168e29e",
   "metadata": {},
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, 'SELECT * FROM classes')\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9778f874-c79d-40ed-9836-d5fab6851037",
   "metadata": {},
   "source": [
    "## `counts` fact table\n",
    "#### Measure: `count` of students<br>Foreign key to the `calendar` dimension: `when`<br>Foreign key to the `class` dimension: `which`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c8a3c930-33da-43dc-8e6d-c92b4c9cbc0a",
   "metadata": {},
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, 'SELECT * FROM counts')\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "316cb1a8-fc91-4cee-a5fa-ce4de063e0f4",
   "metadata": {},
   "source": [
    "## Join the `counts` fact table with the dimension tables"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "849062c8-e875-4dc3-bbe7-c495662289f6",
   "metadata": {},
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, \n",
    "    \"\"\"\n",
    "    SELECT school_year, semester, YEAR(start_date) AS year, \n",
    "           start_date, end_date, \n",
    "           school, department, level, class, name, count\n",
    "    FROM calendar, classes, counts\n",
    "    WHERE counts.when  = calendar.key\n",
    "    AND   counts.which = classes.key\n",
    "    ORDER BY start_date, semester, school, department, level, class\n",
    "    \"\"\"\n",
    ")\n",
    "\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ac6c3b6e-71df-4bda-bb2d-9eac0fb278fe",
   "metadata": {},
   "source": [
    "# Slice: DATA 225 only\n",
    "#### To slice, hold one attribute of one dimension constant:\n",
    "``` SQL\n",
    "classes.class = 'DATA 225'\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7bc50277-4f5b-40da-a6ea-2caf415273fb",
   "metadata": {},
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, \n",
    "    \"\"\"\n",
    "    SELECT calendar.*, classes.*, counts.count\n",
    "    FROM calendar, classes, counts\n",
    "    WHERE classes.class = 'DATA 225'\n",
    "    AND   counts.when  = calendar.key\n",
    "    AND   counts.which = classes.key\n",
    "    \"\"\"\n",
    ")\n",
    "\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d51a495a-ef50-40b9-86da-bd615ca75bce",
   "metadata": {},
   "source": [
    "# Slice: Spring semester only\n",
    "#### To slice, hold one attribute of one dimension constant:\n",
    "``` SQL\n",
    "calendar.semester = 'spring'\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0833785d-c8b4-40f4-993f-cbb8bba8c295",
   "metadata": {},
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, \n",
    "    \"\"\"\n",
    "    SELECT calendar.*, classes.*, counts.count\n",
    "    FROM calendar, classes, counts\n",
    "    WHERE calendar.semester = 'spring'\n",
    "    AND   counts.when  = calendar.key\n",
    "    AND   counts.which = classes.key\n",
    "    \"\"\"\n",
    ")\n",
    "\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5d0a543f-cbbc-4383-a030-d893c735908d",
   "metadata": {},
   "source": [
    "# Dice: Graduate students in the schools of Information and Science during fall semesters\n",
    "#### To dice: Use a range of values in each of one or more dimensions:\n",
    "``` SQL\n",
    "WHERE classes.school IN ('Information', 'Science') \n",
    "AND   calendar.semester IN ('spring', 'fall')\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8fa69429-b962-4288-9b61-2290fb97fc5e",
   "metadata": {},
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, \n",
    "    \"\"\"\n",
    "    SELECT calendar.*, classes.*, counts.count\n",
    "    FROM calendar, classes, counts\n",
    "    WHERE classes.school IN ('Information', 'Science')\n",
    "    AND   calendar.semester IN ('spring', 'fall')\n",
    "    AND   classes.level = 'graduate'\n",
    "    AND   counts.when  = calendar.key\n",
    "    AND   counts.which = classes.key\n",
    "    \"\"\"\n",
    ")\n",
    "\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "63b77b92-8854-4338-b5a3-778d36805912",
   "metadata": {},
   "source": [
    "## Drill downs for subtotaling"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "79e596dd-a04e-44a9-9c04-01ba57961d0c",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Grand total student count"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0de3ad0c-26dc-4c4e-bc29-e93aa73b83f6",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, \n",
    "    \"\"\"\n",
    "    SELECT SUM(count)\n",
    "    FROM counts\n",
    "    \"\"\"\n",
    ")\n",
    "\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "81012cc9-b0f0-4c32-9892-1405e3fa80ca",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Student count subtotals by school year"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d1c504be-ac9e-4b49-a6f3-655c9a3263dd",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, \n",
    "    \"\"\"\n",
    "    SELECT school_year,\n",
    "           SUM(count) AS yearly_total\n",
    "    FROM calendar, classes, counts\n",
    "    WHERE counts.when  = calendar.key\n",
    "    AND   counts.which = classes.key\n",
    "    GROUP BY school_year\n",
    "    ORDER BY school_year\n",
    "\n",
    "    \"\"\"\n",
    ")\n",
    "\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9417ee85-cfdd-4555-bac5-87c5de0bd1a5",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Student count subtotals by school year and semester"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fcbe31b1-6122-4b4f-bb00-201e09c34b7c",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, \n",
    "    \"\"\"\n",
    "    SELECT school_year, semester,\n",
    "           SUM(count) AS semester_total\n",
    "    FROM calendar, classes, counts\n",
    "    WHERE counts.when  = calendar.key\n",
    "    AND   counts.which = classes.key\n",
    "    GROUP BY school_year, semester\n",
    "    ORDER BY school_year, semester\n",
    "\n",
    "    \"\"\"\n",
    ")\n",
    "\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "be7efa97-aff4-4a2d-b0ba-3ca3fd8fbaec",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Student count subtotals by school year, semester, and school"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5582a26a-dc24-4081-a615-ef922f1d8c7e",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, \n",
    "    \"\"\"\n",
    "    SELECT school_year, semester, school,\n",
    "           SUM(count) AS school_total\n",
    "    FROM calendar, classes, counts\n",
    "    WHERE counts.when  = calendar.key\n",
    "    AND   counts.which = classes.key\n",
    "    GROUP BY school_year, semester, school\n",
    "    ORDER BY school_year, semester, school\n",
    "\n",
    "    \"\"\"\n",
    ")\n",
    "\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2d64cf2d-1340-4864-962c-79f813c3e926",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Student count subtotals by school year, semester, school, and department"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b2aa7502-aae5-431f-a002-1e1255fc27fe",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, \n",
    "    \"\"\"\n",
    "    SELECT school_year, semester, school, department,\n",
    "           SUM(count) AS department_total\n",
    "    FROM calendar, classes, counts\n",
    "    WHERE counts.when  = calendar.key\n",
    "    AND   counts.which = classes.key\n",
    "    GROUP BY school_year, semester, school, department\n",
    "    ORDER BY school_year, semester, school, department\n",
    "\n",
    "    \"\"\"\n",
    ")\n",
    "\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "80c4872f-aa97-4de8-a8e9-ba8b886668e1",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Student count subtotals by school year, semester, school, department, and level"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7339d1fc-1c06-459b-a810-b40ce7064aad",
   "metadata": {},
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, \n",
    "    \"\"\"\n",
    "    SELECT school_year, semester, school, department, level,\n",
    "           SUM(count) AS level_total\n",
    "    FROM calendar, classes, counts\n",
    "    WHERE counts.when  = calendar.key\n",
    "    AND   counts.which = classes.key\n",
    "    GROUP BY school_year, semester, school, department, level\n",
    "    ORDER BY school_year, semester, school, department, level\n",
    "\n",
    "    \"\"\"\n",
    ")\n",
    "\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1bd811c4-610d-465a-bd11-07a5bc90e44a",
   "metadata": {
    "tags": []
   },
   "source": [
    "## Window functions\n",
    "#### We use window functions to display all the subtotals and the grand total."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a6b486aa-8b15-499b-9e85-f21ff05e56a3",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, \n",
    "    \"\"\"\n",
    "    SELECT DISTINCT \n",
    "        school_year, semester, school, department, level,\n",
    "        SUM(count) OVER() \n",
    "            AS grand_total,\n",
    "        SUM(count) OVER(PARTITION BY school_year) \n",
    "            AS yearly_total,\n",
    "        SUM(count) OVER(PARTITION BY school_year, semester) \n",
    "            AS semester_total,\n",
    "        SUM(count) OVER(PARTITION BY school_year, semester, school) \n",
    "            AS school_total,\n",
    "        SUM(count) OVER(PARTITION BY school_year, semester, \n",
    "                                    school, department) \n",
    "            AS dept_total,\n",
    "        SUM(count) OVER(PARTITION BY school_year, semester, \n",
    "                                    school, department, level) \n",
    "            AS level_total\n",
    "    FROM calendar, classes, counts\n",
    "    WHERE counts.when  = calendar.key\n",
    "    AND   counts.which = classes.key\n",
    "    ORDER BY school_year, semester, school, department, level\n",
    "    \"\"\"\n",
    ")\n",
    "\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8d7cd976-503e-4937-9855-a126f1f99f10",
   "metadata": {},
   "outputs": [],
   "source": [
    "cursor.close()\n",
    "conn.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c7228d70-01c2-4813-8fb2-552cbcd70f41",
   "metadata": {},
   "source": [
    "#### (c) 2023 by Ronald Mak"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b7523c88-d375-4077-ac34-d44fde302c16",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.18"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
