如何在SQLite中使用子查询查找最小值和最大值

hgqdbh6s  于 2022-12-27  发布在  SQLite
关注(0)|答案(1)|浏览(309)

我尝试在SQLite中使用子查询来查找数据的最小值和最大值,并返回最小值和最大值的乘积名。下面几行显示了两个单独的查询,它们将给予我答案,但我希望像在第三个查询中尝试的那样将它们组合起来。但是,第三个查询没有结果。

-- Select minimum and maximum price
SELECT MIN(UnitPrice), MAX(UnitPrice)
FROM Products;

-- Return productnames
SELECT ProductName, UnitPrice
FROM Products
WHERE UnitPrice = 296.5 OR UnitPrice = 2.5;

-- Combine first 2 queries by using subquery gives no results
SELECT ProductName, UnitPrice
FROM Products
WHERE UnitPrice = (
    SELECT MAX(UnitPrice) OR MIN(UnitPrice)
    FROM Products 
);

我尝试了几种组合查询的方法,但是它们都给予错误或者没有显示结果。有人有任何提示吗?(作业是使用子查询,所以它们需要在那里)

uqzxnwby

uqzxnwby1#

如果要继续使用子查询方法,可以用途:

SELECT ProductName, UnitPrice
FROM Products
WHERE UnitPrice = (SELECT MIN(UnitPrice) FROM Products) OR
      UnitPrice = (SELECT MAX(UnitPrice) FROM Products);

您还可以在此处使用RANK()分析函数:

WITH cte AS (
    SELECT *, RANK() OVER (ORDER BY UnitPrice) rnk1,
              RANK() OVER (ORDER BY UnitPrice DESC) rnk2
    FROM Products
)

SELECT ProductName, UnitPrice
FROM cte
WHERE rnk1 = 1 OR rnk2 = 1;

相关问题