compsci-notes-spring-2024/labs/database-programming/lab-1/instructions.md
2024-02-12 11:04:38 -06:00

99 lines
3.6 KiB
Markdown

# Lab 1
*UPDATE: Scenario 5 should be `or`, not `and`.*
*UPDATE: Scenario 10 table name is `StateProvinces`.*
This lab has you practice simple queries against tables with filtering and ordering. Write the SQL queries that properly answer each scenario.
For each scenario include the following in your answer:
- The SQL query (properly formatted)
- The number of rows returned by the query
*Note: DO NOT hard code any primary key IDs in your queries.*
This lab uses the `WideWorldImporters` database.
## Scenario 1
Select the `SupplierName`, `WebsiteURL`, `DeliveryAddressLine1`, `DeliveryAddressLine2` and `DeliveryPostalCode` columns from the `Purchasing.Suppliers` table.
Rows: 13
## Scenario 2
Select the `StateProvinceName`, `SalesTerritory`, and `CountryID` from the `Application.StateProvinces` table.
Include only the rows where `SalesTerritory` is `Southeast`.
Order the rows by `StateProvinceName`.
Rows: 12
## Scenario 3
Select the `CustomerID`, `TransactionDate` and `TransactionAmount` from the `Sales.CustomerTransactions` table.
Include only the rows where `TransactionAmount` is less than zero and `TransactionDate` is in the year 2015.
Order the rows by `TransactionDate` descending and then by `TransactionAmount` ascending.
Rows: 8635
## Scenario 4
Select the `CountryName`, `Continent`, `Region`, `Subregion` from the `Application.Countries` table.
Include only the rows where `LatestRecordedPopulation` is greater than 1 million people and `Continent` is not `Oceania`.
Order the rows by `CountryName`, `Continent`, `Region` and then `Subregion`.
Rows: 147
## Scenario 5
Select the `StockItemName`, `RecommendedRetailPrice` and `Tags` from the `Warehouse.StockItems` table.
Include only the rows where `IsChillerStock` is true or `StockItemName` begins with `USB`.
Order the rows by `StockItemName`.
Only return the first 10 rows.
Rows: 10
## Scenario 6
Select the `InvoiceId`, `InvoiceDate` and `CustomerName` from the `Sales.Invoices` and `Sales.Customers` tables.
Include only the invoices from `1/1/2016` to `3/1/2016` and customers that do not have `Toys` in the name.
Order the rows by `CustomerName` and then by `InvoiceDate`.
Rows: 1382
*Note: Return `CustomerName`, not `CustomerId`.
## Scenario 7
Select the `ColorName` columns from the `Warehouse.Colors` table that are not being used in the `Warehouse.StockItems` table.
The `Warehouse.StockItems.ColorId` column contains the `Warehouse.Colors.ColorId` value.
Order by `ColorName`.
Rows: 29
## Scenario 8
Select the `CityName`, `StateProvinceName` and `StateProvinceCode` from the `Application.Cities` table.
Include only the cities that begin with the letter `A` from states that are in the `Southeast` sales territory.
Order the rows by `StateProvinceName` descending and then by `CityName`.
Rows: 376
## Scenario 9
Select the `CustomerId` (as `Id`) and `CustomerName` (as `Name`) columns from the `Sales.Customers` table combined with the `SupplierId` and `SupplierName` columns from the `Purchasing.Suppliers` table.
Include a `Type` column that is set to `Customer` for customer rows and `Supplier` for supplier rows.
Order the resulting data by the type and then by customer/supplier name.
Rows: 676
*Note: The resultset will have only 3 columns (`Type`, `Id` and `Name`).*
## Scenario 10
Select the `CityName`, `StateProvinceName`, `CountryName` and `SalesTerritory` from the `Application.Cities`, `Application.StateProvinces` and `Application.Countries` tables.
Include only the rows that are for the `SalesTerritory` with values of `Southeast` or `Southwest`.
Order the rows by `StateProvinceName` and then by `CityName`.
Rows: 13341