一道sql面试题统计人数>1的记录id

缘起

朋友面试, 问我面到的题目, 哎,每次sql的问题, 其实想吧想吧都能答出来,但是如果要求你短时间,特别是面试官就站在你对面的话, 还真有点压力.

题目: 如下一张表 T_PUB_MEMBER

PUB_ID JOB_TITLE
1 采集人员
3 财务人员
1 采集人员
2 采集人员

要统计这张表中JOB_TITLE为采集人员的数量>1的PUB_ID

分析

sql题一般都是逐步写出答案的.

  1. 1
    SELECT PUB_ID AS id FROM T_PUB_MEMBER WHERE JOB_TITLE='采集人员' ORDER BY JOB_TITLE

    得到所有JOB_TITLE为采集人员的ID列表. 将此表记做c

  2. 1
    SELECT c.id FROM c GROUP BY c.id HAVING COUNT(1)>1

    得到答案

综上,答案是

1
2
SELECT c.id FROM
(SELECT PUB_ID AS id FROM T_PUB_MEMBER WHERE JOB_TITLE='采集人员' ORDER BY JOB_TITLE) c GROUP BY c.id HAVING COUNT(1)>1