w3resource

AdventureWorks Database: Models with a maximum list price more than twice the average

SQL Query - AdventureWorks: Exercise-198 with Solution

198. From the following table write a query in SQL to find product models where the maximum list price is more than twice the average.

Sample table: Production.Product

productid|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 --

Click to view Full table

Sample Solution:


-- Selecting ProductModelID from the Production.Product table and aliasing it as 'p1'
SELECT p1.ProductModelID
-- Grouping the result by ProductModelID
FROM Production.Product AS p1
GROUP BY p1.ProductModelID
-- Filtering the grouped results based on a condition
HAVING MAX(p1.ListPrice) <= 
    -- Subquery to calculate the average list price multiplied by 2
    (SELECT AVG(p2.ListPrice) * 2
     -- From the Production.Product table aliased as 'p2'
     FROM Production.Product AS p2
     -- Filtering records where the ProductModelID matches that of the outer query
     WHERE p1.ProductModelID = p2.ProductModelID);

Explanation:

  • This SQL query retrieves ProductModelID from the Product table based on a condition involving the maximum list price and the average list price multiplied by 2 for each product model.
  • Comments are added to explain each part of the query for better understanding and maintenance.
  • Here's a breakdown of what the query does:
    • The SELECT clause specifies the ProductModelID column to be retrieved from the Product table, aliased as 'p1'.
    • The GROUP BY clause groups the result set by ProductModelID.
    • The HAVING clause filters the grouped results based on a condition involving the maximum list price (MAX(p1.ListPrice)) being less than or equal to the average list price multiplied by 2.
    • The subquery calculates the average list price multiplied by 2 for each product model in the Product table, aliased as 'p2'.
    • The WHERE clause in the subquery filters records where the ProductModelID matches that of the outer query.

Sample Output:

productmodelid|
--------------+
            58|
             8|
            87|
           116|
            68|
            51|
            70|
            80|
            52|
            84|
            92|
           101|
            69|
...

SQL AdventureWorks Editor:

Practice Online


Contribute your code and comments through Disqus.

Previous: Retrieve the name of each employee whose bonus in the SalesPerson table is 5000.
Next: Find the names of employees who have sold a particular product.


What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/sql-exercises/adventureworks/sql-adventureworks-exercise-198.php