SQL(具有相同生日的员工)

时间:2018-07-25 19:47:41

标签: sql

我有这张桌子:

name     dob
Avash   1991-07-23
Bipin   1990-03-25
Bijay   1990-03-25

我如何获取具有相同工作权限的员工列表?

4 个答案:

答案 0 :(得分:3)

您可以尝试这样的事情

SELECT * FROM table WHERE dob IN (
  SELECT dob
  FROM table
  HAVING COUNT(dob) > 1
  GROUP BY dob
)

子查询查找所有出现多次的dob值,然后只需选择与这些dob匹配的所有名称即可。

答案 1 :(得分:1)

如果RDBMS支持窗口功能,则为一个选项:

SELECT *
FROM (
   SELECT name, dob, count(*) OVER (PARTITION BY dob) as dobcount
   FROM yourtable
) sub
WHERE sub.dobcount > 1

这将为您提供与@daniel的非常正确答案相似的答案。

答案 2 :(得分:0)

SELECT  tbl1.name
       ,tbl2.name
FROM    table tbl1
       ,table tbl2
WHERE   tbl1.dob = tbl2.dob
AND     tbl1.name < tbl2.name

答案 3 :(得分:0)

我会做这样的事情...

CREATE TABLE #stuff (first_name varchar(15), dob date);

INSERT INTO #stuff (first_name, dob)
VALUES ('Avash', '1991-07-23')
     , ('Bipin', '1990-03-25')
     , ('Bijay', '1990-03-25')
     , ('Mike', '2010-12-01')
     , ('Dick', '2010-12-01')
     , ('Kavitha', '1992-03-25');

SELECT s.[first_name]
     , s.dob
  FROM #stuff s
 WHERE EXISTS (
SELECT dob
  FROM #stuff
 WHERE dob = s.dob
 GROUP BY dob
HAVING COUNT(*) > 1
);

这就是你得到的...

enter image description here