【问题标题】:How to find a Maximum Column value in SQL which has a WHERE clause?如何在具有 WHERE 子句的 SQL 中查找最大列值?
【发布时间】:2020-05-11 19:48:11
【问题描述】:

我正在尝试用 SQL 编写一个过程。 在将所有日期条目与传递的输入参数匹配后,我想从表中打印带有“最大分数”的记录。 现在,代码只打印与指定日期对应的所有记录。 我不确定在这种情况下如何使用 MAX()。

/* =========================================================
Procedure to find the Highest Movie Rating on a particular date.
Given, an inpDate (input Date) it first looks up all Movie Reviews
of that particular date.
Then, it checks a StandardizedReviews Table (sTbl) and
finds the MAXIMUM adjusted_score with the
Highest Review Score (the variable adjusted_score)
========================================================= */
Use StandardizedReviews
Drop Procedure if exists HighestReview;
GO

CREATE PROCEDURE HighestReview @inpDate DATE AS (
        SELECT sTbl.adjusted_score "Max Score"
        FROM dbo.StandardizedReviews sTbl
        WHERE CAST(sTbl.date as DATE) = CAST(@inpDate as DATE)
        GROUP BY sTbl.date, sTbl.adjusted_score
)
GO
exec HighestReview '2020-03-05'
GO

现在,我的输出看起来像:

但我希望它只显示得分为 100 的记录。 谢谢。

【问题讨论】:

    标签: sql select max where-clause


    【解决方案1】:

    您只需用 MAX() AS 'Max Score' 包装adjusted_score 值,这将只选择最高分。您还可以在您的组中删除对 sTbl.adjusted_score 的引用,并且仅按日期排序:

    CREATE PROCEDURE HighestReview @inpDate DATE AS (
        SELECT MAX(sTbl.adjusted_score) AS 'Max Score'
        FROM dbo.StandardizedReviews sTbl
        WHERE CAST(sTbl.Date AS DATE) = CAST(@inpDate AS DATE)
        GROUP BY sTbl.Date
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      • 2020-09-18
      相关资源
      最近更新 更多