【问题标题】:Counting the least repeated value and printing the name of that person计算最少重复的值并打印那个人的名字
【发布时间】:2023-02-03 01:09:02
【问题描述】:

我有一个名为 employees 的数据库,我想编写一个 SQL 查询,在其中计算最少重复的 office_id 并获取坐在该办公室的人员姓名。我做错了,我是否需要为此使用子查询,或者是否可以不使用子查询?看起来很简单,我无法解决它。

id first_name office_id
1 Stan 1
2 Danny 1
3 Elle 2

所以在这里我想得到 Elle 这个名字,因为她的 office id 最少。 到目前为止,我只有:

SELECT first_name, COUNT(office_id)
FROM employees 
GROUP BY first_name;

但所有这一切只是返回每个名字在我的表中出现的次数。有任何想法吗?提前致谢。

【问题讨论】:

  • 仅标记您使用的数据库。
  • 你想要 4 行,每行有两个 ID
  • 如果您有 2 个只有 1 个人的办公室怎么办?
  • 好点@Larnu,但是这个数据库不会被改变,所以没关系。只有一个办公室会有一个人。
  • 这是哪个数据库管理系统?

标签: sql


【解决方案1】:

假设使用 mysql 或 Postgresql,你可以试试这个:

with cte as ( 
  SELECT office_id
  FROM employees 
  GROUP BY office_id
  order by count(1) asc
  limit 1
)
select e.* from cte c
inner join employees e on e.office_id = c.office_id

使用with 将得到最少的重复办公室,然后使用内部连接我们得到所有的人。

你可以limit 2得到两个最小的办公室...

Demo here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 2013-10-21
    • 1970-01-01
    相关资源
    最近更新 更多