我将此表称为item:
| PERSON_id | ITEM_id |
|------------------|----------------|
|------CP2---------|-----A03--------|
|------CP2---------|-----A02--------|
|------HB3---------|-----A02--------|
|------BW4---------|-----A01--------|
我需要一条SQL语句,该语句将输出具有最多Items的人。也不十分确定从哪里开始。
答案 0 :(得分:1)
我建议您为此使用内部查询。内部查询将包含group by和order by语句。外部查询将选择第一个包含最多项目的语句。
SELECT * FROM
(
SELECT PERSON_ID, COUNT(*) FROM TABLE1
GROUP BY PERSON_ID
ORDER BY 2 DESC
)
WHERE ROWNUM = 1
答案 1 :(得分:0)
找到一个聚合列的最大值需要进行多个计算,因此您可以在此处使用“公用表表达式”(cte)来保存结果,然后在where子句中重复使用该结果:
with cte as (
select
person_id
, count(item_id) count_items
from mytable
group by
person_id
)
select
*
from cte
where count_items = (select max(count_items) from cte)
请注意,如果一个以上的人共享相同的最大计数;此查询将返回多行。