抱歉,格式问题!我不知道它在这个网站上是否有效:(
我试图只返回 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/