SQL查询max(), count()
数据库模式看起来像
员工(员工名称,街道,城市)
作品(员工姓名、公司名称、工资)
公司(公司名称,城市)
管理(员工姓名,经理姓名)
需要执行的查询是:
找到拥有最多员工的公司。
我可以通过查询找到最大计数:
SELECT max( cnt ) max_cnt
FROM (
SELECT count( employee_name ) cnt, company_name
FROM works
GROUP BY company_name
)w1;
但是现在我找不到公司的名称。如果有人有任何想法请分享。
the database schema looks like
employee(employee_name,street,city)
works(employee_name,company_name,salary)
company(company_name,city)
manages(employee_name,manager_name)
the query needed to do is:
find the company that has the most employees.
I could find out the maximum count by the query:
SELECT max( cnt ) max_cnt
FROM (
SELECT count( employee_name ) cnt, company_name
FROM works
GROUP BY company_name
)w1;
But now I can't find out the name of the company. If anyone has some idea please share.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
要获取包含最大值的整行,可以使用
ORDER BY ... DESC LIMIT 1
而不是MAX
:To get the entire row containing the maximum value you can use
ORDER BY ... DESC LIMIT 1
instead ofMAX
:怎么样:
编辑:
上面针对 MySQL 进行了更正
How about something like:
Edit:
Corrected above for MySQL
这是工作查询
Here's the working query
这看起来像是一个课程问题。
如果不止一家公司拥有相同的最大员工人数,则使用 LIMIT 进行的查询将不起作用。 “ORDER BY”没有过滤掉无用的信息。因此我们有以下解决方案
This looks like a course question.
If more than one companies have the same largest number of employees the query with LIMIT doesn't work. "ORDER BY" didn't filter out useless info. Thus we have the following solution
在甲骨文中
In Oracle