AdventureWorks Database: Return the name of the product that is the least expensive
SQL Query - AdventureWorks: Exercise-102 with Solution
102. From the following table write a query in SQL to return the name of the product that is the least expensive in a given product category. Return name, list price and the first value i.e. LeastExpensive of the product.
Sample table: production.Productproductid|name |productnumber|makeflag|finishedgoodsflag|color |safetystocklevel|reorderpoint|standardcost|listprice|size|sizeunitmeasurecode|weightunitmeasurecode|weight |daystomanufacture|productline|class|style|productsubcategoryid|productmodelid|sellstartdate |sellenddate |discontinueddate|rowguid |modifieddate | ---------+--------------------------------+-------------+--------+-----------------+------------+----------------+------------+------------+---------+----+-------------------+---------------------+-------+-----------------+-----------+-----+-----+--------------------+--------------+-----------------------+-----------------------+----------------+------------------------------------+-----------------------+ 1|Adjustable Race |AR-5381 |false |false | | 1000| 750| 0| 0| | | | | 0| | | | | |2008-04-30 00:00:00.000| | |694215b7-08f7-4c0d-acb1-d734ba44c0c8|2014-02-08 10:01:36.827| 2|Bearing Ball |BA-8327 |false |false | | 1000| 750| 0| 0| | | | | 0| | | | | |2008-04-30 00:00:00.000| | |58ae3c20-4f3a-4749-a7d4-d568806cc537|2014-02-08 10:01:36.827| 3|BB Ball Bearing |BE-2349 |true |false | | 800| 600| 0| 0| | | | | 1| | | | | |2008-04-30 00:00:00.000| | |9c21aed2-5bfa-4f18-bcb8-f11638dc2e4e|2014-02-08 10:01:36.827| 4|Headset Ball Bearings |BE-2908 |false |false | | 800| 600| 0| 0| | | | | 0| | | | | |2008-04-30 00:00:00.000| | |ecfed6cb-51ff-49b5-b06c-7d8ac834db8b|2014-02-08 10:01:36.827| 316|Blade |BL-2036 |true |false | | 800| 600| 0| 0| | | | | 1| | | | | |2008-04-30 00:00:00.000| | |e73e9750-603b-4131-89f5-3dd15ed5ff80|2014-02-08 10:01:36.827| 317|LL Crankarm |CA-5965 |false |false |Black | 500| 375| 0| 0| | | | | 0| |L | | | |2008-04-30 00:00:00.000| | |3c9d10b7-a6b2-4774-9963-c19dcee72fea|2014-02-08 10:01:36.827| 318|ML Crankarm |CA-6738 |false |false |Black | 500| 375| 0| 0| | | | | 0| |M | | | |2008-04-30 00:00:00.000| | |eabb9a92-fa07-4eab-8955-f0517b4a4ca7|2014-02-08 10:01:36.827| -- more --
Sample Solution:
-- Selecting the Name and ListPrice columns, along with the least expensive product within the ProductSubcategoryID = 37
SELECT Name, ListPrice,
FIRST_VALUE(Name) OVER (ORDER BY ListPrice ASC) AS LeastExpensive
-- From the Production.Product table
FROM Production.Product
-- Filtering the products based on the ProductSubcategoryID = 37
WHERE ProductSubcategoryID = 37;
Explanation:
- This SQL query retrieves the name and list price of products from the Production.Product table, along with the name of the least expensive product within the ProductSubcategoryID = 37.
- The SELECT clause specifies the columns to be retrieved, including the product name, list price, and the name of the least expensive product.
- The FROM clause indicates the source table from which the data will be retrieved.
- The WHERE clause filters the products based on the ProductSubcategoryID = 37, focusing on a specific category.
- The OVER clause is used with the FIRST_VALUE window function to calculate the least expensive product within the specified category. It orders the list of products by ListPrice in ascending order.
Sample Output:
name |listprice|leastexpensive | -------------------+---------+-------------------+ Patch Kit/8 Patches| 2.29|Patch Kit/8 Patches| Road Tire Tube | 3.99|Patch Kit/8 Patches| Touring Tire Tube | 4.99|Patch Kit/8 Patches| Mountain Tire Tube | 4.99|Patch Kit/8 Patches| LL Road Tire | 21.49|Patch Kit/8 Patches| LL Mountain Tire | 24.99|Patch Kit/8 Patches| ML Road Tire | 24.99|Patch Kit/8 Patches| Touring Tire | 28.99|Patch Kit/8 Patches| ML Mountain Tire | 29.99|Patch Kit/8 Patches| HL Road Tire | 32.6|Patch Kit/8 Patches| HL Mountain Tire | 35|Patch Kit/8 Patches|
SQL AdventureWorks Editor:
Practice Online
Contribute your code and comments through Disqus.
Previous: Calculate salary percentile for each employee for specific department.
Next: Return the employee with the fewest number of vacation hours.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics