1

嗨,我有以下数据库架构。

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)
4

4 回答 4

2

你的子查询

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
于 2013-03-22T10:43:27.063 回答
1

我再给你一个提示。这<就是问题所在(仔细考虑子查询返回的内容)。

于 2013-03-22T10:38:07.023 回答
0

我们可以< All在这种情况下使用吗?

例如:

SELECT company-name
FROM works
GROUP BY company-name
HAVING sum(salary) < ALL( SELECT sum(salary)
FROM works
GROUP BY company-name)
于 2015-01-09T07:16:03.667 回答
0

您可以按如下方式找到它:

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));
于 2022-01-13T13:43:10.947 回答