【问题标题】:SQL employee / company/countrySQL 员工/公司/国家
【发布时间】:2020-02-06 20:37:11
【问题描述】:

我有三张桌子

  1. 国家(国家 ID - 国家名称 - 国家流行音乐)
  2. 城市(城市 id - 城市名称 - 城市代码 - 城市流行)
  3. 公司(城市代码-公司名称-公司员工) 公司员工是员工人数。

我必须提供一个表格,其中包含每个国家/地区级别的公司的员工总数。

我使用了以下查询

SELECT country_name, company_name, company_employee  
FROM country,
     city,
     company
WHERE country.country_id = city.country_id
  and city.city_code = company.city_code

我拿了一张表格,您可以在其中看到国家、公司和员工人数 (例如,在英国的一个国家,同一家公司 ACS 有 2 条记录 ACS 300 EMPLOYEE 和 ACS 100 EMPLOYEE,而不是一条记录 ACS 400 员工)

我认为我的代码中缺少某些内容。我尝试过使用 sum 和 group 等函数,但失败了。

【问题讨论】:

  • 提示:JOIN从不FROM 子句中使用逗号。
  • 今日提示:使用现代、明确的JOIN 语法。更容易编写(没有错误),更容易阅读(和维护),并且在需要时更容易转换为外连接。
  • 当涉及多个表时,始终限定所有列是一种很好的编程习惯。例如。 country.country_name 而不仅仅是 country_name

标签: sql


【解决方案1】:

这是你想要的吗?

SELECT cy.country_name, co.company_name, SUM(co.company_employee)  
FROM company co JOIN
     city ci
     ON ci.city_code = co.city_code JOIN
     country cy
     ON cy.country_id = ci.country_id
GROUP BY cy.country_name, co.company_name;

注意正确、明确、现代、标准 JOIN 语法的使用。 从不FROM 子句中使用逗号。如果您正在学习 SQL,这一点尤其重要;你应该学会正确使用语言。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    相关资源
    最近更新 更多