{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "dd4bd64e-67e2-4075-853d-737e83012581",
   "metadata": {},
   "outputs": [],
   "source": [
    "from DATA225utils import make_connection, dataframe_query"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e0f0612e-d74b-405f-ad01-bd8d4090db34",
   "metadata": {},
   "source": [
    "# ZAGI Sales"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9dd22c32-e1f1-407e-9db6-2524093e2b08",
   "metadata": {},
   "outputs": [],
   "source": [
    "conn = make_connection(config_file = 'ZAGI-Sales.ini')\n",
    "cursor = conn.cursor()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e3b75a67-7c05-4b8b-b0ce-e5f2d581ef87",
   "metadata": {},
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, \"SELECT * FROM product\")\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d26e17fe-b377-4dec-8085-dac89c42bffc",
   "metadata": {},
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, \"SELECT * FROM sold_via\")\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a3bc9587-7a98-4bf6-b6cc-82ad87090633",
   "metadata": {},
   "outputs": [],
   "source": [
    "cursor.execute(\"DROP VIEW IF EXISTS products_more_than_3_sold\")\n",
    "\n",
    "sql = ( \"\"\"\n",
    "        CREATE VIEW products_more_than_3_sold AS\n",
    "        SELECT product_id, product_name, product_price\n",
    "        FROM product\n",
    "        WHERE product_id IN (SELECT product_id\n",
    "                             FROM sold_via\n",
    "                             GROUP BY product_id\n",
    "                             HAVING SUM(no_of_items) > 3)\n",
    "        \"\"\"\n",
    "      )\n",
    "\n",
    "cursor.execute(sql)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b9a869d3-fe4b-4345-9392-937327594603",
   "metadata": {},
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, 'SELECT * FROM products_more_than_3_sold')\n",
    "\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e7b87317-b504-4dd4-a113-b4ea7281e93a",
   "metadata": {},
   "outputs": [],
   "source": [
    "cursor.execute(\"DROP VIEW IF EXISTS products_in_multiple_trnsc\")\n",
    "\n",
    "sql = ( \"\"\"\n",
    "        CREATE VIEW products_in_multiple_trnsc AS\n",
    "        SELECT product_id, product_name, product_price\n",
    "        FROM product\n",
    "        WHERE product_id IN (SELECT product_id\n",
    "                             FROM sold_via\n",
    "                             GROUP BY product_id\n",
    "                             HAVING COUNT(*) > 1);\n",
    "        \"\"\"\n",
    "      )\n",
    "\n",
    "cursor.execute(sql)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "52464900-73d8-4b68-8e1e-6462a7a71175",
   "metadata": {},
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, 'SELECT * FROM products_in_multiple_trnsc')\n",
    "\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "161346f8-1410-4958-b7d6-507a8c099ec9",
   "metadata": {},
   "outputs": [],
   "source": [
    "cursor.close()\n",
    "conn.close()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b196a541-0f9c-40e4-80d0-1c7003b97da7",
   "metadata": {},
   "source": [
    "# School"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bdb771d7-4c73-426b-8733-b343ef398d0e",
   "metadata": {},
   "outputs": [],
   "source": [
    "conn = make_connection('school.ini')\n",
    "cursor = conn.cursor()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7b69a141-4508-478f-a94e-b520453e5e88",
   "metadata": {},
   "outputs": [],
   "source": [
    "cursor.execute(\"DROP VIEW IF EXISTS tim_novak_class_codes\")\n",
    "\n",
    "sql = ( \"\"\"\n",
    "        CREATE VIEW tim_novak_class_codes AS\n",
    "        SELECT code \n",
    "        FROM student, class, takes \n",
    "        WHERE last = 'Novak' \n",
    "        AND first = 'Tim' \n",
    "        AND id = student_id \n",
    "        AND code = class_code    \n",
    "        \"\"\"\n",
    "      )\n",
    "\n",
    "cursor.execute(sql)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "177fb992-0f28-4ee7-9936-fadfef9542dc",
   "metadata": {},
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn, 'SELECT * FROM tim_novak_class_codes')\n",
    "\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c9107eb1-eaec-4064-92e6-5c8e64b243cf",
   "metadata": {},
   "outputs": [],
   "source": [
    "_, df = dataframe_query(conn,\n",
    "    \"\"\"\n",
    "    SELECT DISTINCT id, first, last\n",
    "    FROM student, class, takes\n",
    "    WHERE id = student_id \n",
    "    AND code = class_code \n",
    "    AND last != 'Novak' \n",
    "    AND first != 'Tim' \n",
    "    AND class_code IN (\n",
    "        SELECT * FROM tim_novak_class_codes\n",
    "    )    \n",
    "    ORDER BY last\n",
    "    \"\"\"\n",
    ")\n",
    "\n",
    "display(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2ce5e5dc-1374-42b3-99f7-fa77439852a0",
   "metadata": {},
   "outputs": [],
   "source": [
    "cursor.close()\n",
    "conn.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8518944f-45be-4048-8c1c-d69cc982d118",
   "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.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
