【问题标题】:Find the company that has the smallest payroll找到工资最少的公司
【发布时间】:2013-03-22 10:36:10
【问题描述】:

您好,我有以下数据库架构。

employee (employee-name, street, city)
works (employee-name, company-name, salary)
company (company-name, city)
manages (employee-name, manager-name)

我需要找到工资最少的公司。

我写了以下查询,但我的教练告诉我它错了。

SELECT company-name
FROM works
GROUP BY company-name
HAVING sum(salary) < ( SELECT sum(salary)
FROM works
GROUP BY company-name)

【问题讨论】:

  • 不,我不应该在数据库上执行它,只需编写一个类似 dat 的查询,d trainner 会告诉我它是否错误......

标签: mysql sql sql-server


【解决方案1】:

您的子查询

SELECT company-name, sum(salary)
FROM works
GROUP BY company-name

将为您提供每家公司的累计工资(工资单)。
如果您按升序排列这些数据,则第一条记录将是工资最少的公司。

SELECT company-name, sum(salary)
FROM works
GROUP BY company-name
ORDER BY sum(salary)

您可以使用 MySQL 的 LIMIT 子句将该记录集限制为单个记录,使用

SELECT company-name, sum(salary)
FROM works
GROUP BY company-name
ORDER BY sum(salary)
LIMIT 1

【讨论】:

    【解决方案2】:

    我会给你一个进一步的提示。 &lt; 出了什么问题(仔细考虑子查询返回的内容)。

    【讨论】:

    • 子查询返回一个公司的工资总和。我是 sql 新手,所以没什么想法......
    【解决方案3】:

    在这种情况下我们可以使用&lt; All吗?

    例如:

    SELECT company-name
    FROM works
    GROUP BY company-name
    HAVING sum(salary) < ALL( SELECT sum(salary)
    FROM works
    GROUP BY company-name)
    

    【讨论】:

      【解决方案4】:

      你可以找到它:

      SELECT company_name, SUM (salary) AS lowest_payroll
          FROM works
      GROUP BY company_name
        HAVING SUM (salary) = (SELECT MIN (payrl)     AS low_payroll
                                 FROM (  SELECT company_name, SUM (salary) payrl
                                           FROM works
                                       GROUP BY company_name));
      

      【讨论】:

        猜你喜欢
        • 2019-03-24
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-11
        • 2023-03-14
        • 1970-01-01
        • 2020-08-01
        • 2021-03-08
        相关资源
        最近更新 更多