【问题标题】:SQL Select the highest sale for the current monthSQL 选择当月最高销售额
【发布时间】:2015-03-12 04:11:56
【问题描述】:

我正在尝试选择当月个人销售额最高的姓名、电子邮件地址,但由于某种原因,我的选择语句不会返回正确的日期或最高金额。任何关于正确方向的指导或帮助将不胜感激

Select 
    FirstName, LastName,Email, SaleDate, Max(Total)as HighestTotal
From 
    Sale, Employee
where 
    month(SaleDate) = 12    
Group by 
    SaleDate, FirstName, LastName, Email

【问题讨论】:

  • 你的桌子上有什么?结果你想要什么?
  • 您使用的是哪个 DBMS?后格雷斯?甲骨文?
  • Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI JOIN 语法-92 SQL 标准(20 多年前),不鼓励使用它
  • 看,您没有指定 dbms,现在您至少得到了两个产品特定的答案(针对不同的产品...)为自己和他人节省一些时间,将来正确标记!跨度>

标签: sql


【解决方案1】:

使用TOP 1ORDER BY HighestTotal desc 来获得给定month 的最高个人sale

还可以使用正确的INNER JOIN 语法来连接两个表。考虑到这两个表都有emp_id 作为公共列

SELECT TOP 1 WITH ties E.FirstName,
                       E.LastName,
                       E.Email,
                       S.SaleDate,
                       S.Total AS HighestTotal
FROM   Sale S
       INNER JOIN Employee E
               ON E.emp_id = S.Emp_id
WHERE  Month(S.SaleDate) = 12
ORDER  BY HighestTotal DESC 

With Ties 将带来一名以上的员工,以防与最高个人sale 并列。

【讨论】:

    【解决方案2】:

    1) 你必须为当年添加一个条件:

    其中月份(SaleDate)= 12 AND 年份(SaleDate)= 2015

    2) 您必须添加 ORDER BY 才能获得最高值:

    ORDER BY HighestTotal DESC
    LIMIT 1
    

    【讨论】:

      猜你喜欢
      • 2021-10-12
      • 1970-01-01
      • 2019-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      • 1970-01-01
      • 2016-09-01
      相关资源
      最近更新 更多