mysql - SQL 2012 我的选择中的 MAX 未显示最大值

标签 mysql sql-server

抱歉,格式问题!我不知道它在这个网站上是否有效:(

我试图只返回 1 月份销售表中最高的总计,但它返回该月的所有销售,而不仅仅是最高的销售。

select
  EMP.FirstName,
  EMP.LastName,
  EMP.Email,
  SAL.SaleNumber,
  SAL.SaleDate,
  max(SAL.Total) Total
from 
  Employee EMP
  INNER JOIN Sale SAL
    ON EMP.EmployeeNumber = SAL.EmployeeNumber

--Assuming the month is January of 2015, because there were no sales for this month (March).
where
  SAL.SaleDate between '20150101 00:00:00.000' and '20150131 23:59:59.997'

group by
  EMP.FirstName,
  EMP.LastName,
  EMP.Email,
  SAL.SaleNumber,
  SAL.SaleDate,
  SAL.Total

最佳答案

我假设您想获得每个员工在给定时间范围内的最大销售额?如果是这样,一种选择是使用排名函数,例如 row_number :

with cte as (
select
  EMP.FirstName,
  EMP.LastName,
  EMP.Email,
  SAL.SaleNumber,
  SAL.SaleDate,
  SAL.Total,
  row_number() over (partition by EMP.EmployeeNumber 
                     order by SAL.Total DESC) rn
from 
  Employee EMP
  INNER JOIN Sale SAL
    ON EMP.EmployeeNumber = SAL.EmployeeNumber
where
  SAL.SaleDate >= '20150101 00:00:00.000' and 
  SAL.SaleDate < '20150201 00:00:00.000'
)
select *
from cte
where rn = 1

另请注意,我建议使用 >=<对于这种类型的日期过滤。

关于mysql - SQL 2012 我的选择中的 MAX 未显示最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29056406/

相关文章:

mysql - 在 MySQL 查询中使用 Coldfusion DateDiff?

sql - 不完整数据的完全外连接(通过 id 变量)

sql-server - 尝试在 SQL Server 中创建或编辑作业步骤时出错 "The system cannot find the file specified."

sql - 如何在 SQL SERVER 2016+ 中生成 SHA-3(256) 哈希

php - 通过循环遍历 mySQL 数据库创建数组,在 PHP 中仅捕获一次条目

php - mysql时间戳选择旧记录

.net - 使用 .NET 连接到 MySQL 数据库时出错

sql-server - CTE 和临时表哪个性能更高?

sql-server - 基于所有 "Key/Value"对完全匹配的内部连接两个表

php - 使用 StdClass 对象为多维数组创建 foreach 循环时遇到问题