【发布时间】:2020-02-11 21:08:01
【问题描述】:
给定一个名为 USERS_FAKE U 的表,我需要编写一个查询来查找最常见的名字。
我的问题是我只设法编写了一个只返回一个常见名字的查询。但是,如果名称“Bob”出现 6 次,使其成为最常见的名字,并且还有其他名称出现 6 次(如“Mike”),我的查询将只返回“Bob”。我的查询应该返回 Bob 和 Mike,因为它们的出现次数相同。
尝试 MCRE:
-- The table we are working with
CREATE TABLE USERS_FAKE (
USER_ID NUMBER PRIMARY KEY,
FIRST_NAME VARCHAR2(100) NOT NULL,
LAST_NAME VARCHAR2(100) NOT NULL
);
-- Test Data, to test that we return the Most Common First Name(s)
-- (clearly there are 2 Most Common First Name(s): Bob and Mike)
INSERT INTO USERS_FAKE VALUES(5, 'Bob', 'Io');
INSERT INTO USERS_FAKE VALUES(6, 'Bob', 'Io');
INSERT INTO USERS_FAKE VALUES(7, 'Bob', 'Io');
INSERT INTO USERS_FAKE VALUES(8, 'Bob', 'Io');
INSERT INTO USERS_FAKE VALUES(9, 'Bob', 'Io');
INSERT INTO USERS_FAKE VALUES(10, 'Bob', 'Io');
INSERT INTO USERS_FAKE VALUES(11, 'Mike', 'Ganymede');
INSERT INTO USERS_FAKE VALUES(12, 'Mike', 'Ganymede');
INSERT INTO USERS_FAKE VALUES(13, 'Mike', 'Ganymede');
INSERT INTO USERS_FAKE VALUES(14, 'Mike', 'Ganymede');
INSERT INTO USERS_FAKE VALUES(15, 'Mike', 'Ganymede');
INSERT INTO USERS_FAKE VALUES(16, 'Mike', 'Ganymede');
我需要编写一个使用聚合 + WHERE 子句的简单查询,但您在 SQL 中将两者结合起来。这是在 Oracle 中,我必须使用 ROWNUM,LIMIT 在我的环境中不起作用。
【问题讨论】:
-
@Strawberry 谢谢,我刚刚添加了一个 MCRE
-
@McFloofenbork 为什么要删除您尝试的解决方案?
-
@Barmar 我觉得这篇文章太复杂了。
-
不,这是minimal reproducible example 的必要部分。你展示你的尝试,然后我们展示如何解决它。