我的sql列表条目重复超过一定的值

时间:2015-01-21 19:31:15

标签: mysql sql

我有一个像这样的员工表--->

+------+------------------+------+------------+--------+
| EC   | Name             | Code | Dob        | Salary |  
+------+------------------+------+------------+--------+
| 2001 | ROBBIE KEANE     | VSS1 | 1990-05-16 |  18000 |
| 2002 | ANSUMAN BANERJEE | VSS1 | 1985-05-21 |  18000 |
| 2003 | OMAR GONZALEZ    | SACP | 1989-04-16 |  20000 |
| 2004 | ALAN GORDON      | IALO | 1989-05-03 |  20000 |
| 2005 | ROBBIE KEANE     | IALO | 1988-01-16 |  18000 |
| 2006 | CHANDLER HOFFMAN | BBDP | 1988-07-17 |  22000 |
| 2007 | PAUL POGBA       | BHSM | 1990-08-16 |  18000 |
| 2008 | SHINJI KAGAWA    | LPDC | 1991-01-20 |  18000 |
+------+------------------+------+------------+--------+

现在我要列出那些代码(比如VSS1),这些代码的分配数量少于指定人数(比如少于2),我该怎么做才能帮忙。

到目前为止,我的查询是 - >

SELECT Code,count(*) as 'Number of Staff' from STAFF where Code IN (SELECT Code from STAFF GROUP BY CODE LIMIT 2);

但这不起作用。

2 个答案:

答案 0 :(得分:1)

您可以使用Code子句过滤每个HAVING组的行数:

SELECT Code
     , COUNT(*)
FROM STAFF 
GROUP BY Code
HAVING COUNT(*) < 2

答案 1 :(得分:1)

如果您需要知道此计数小于2的人的姓名,那么......

SELECT S.EC, S.Name, S.Code, S.DOB, S.Salary, SC.Code, SC.Cnt
FROM STAFF S
INNER JOIN (SELECT Count(*) cnt, Code FROM STAFF GROUP BY CODE) SC
 on S.Code = SC.code
WHERE SC.CNT < 2

应该在SQL server和mySQL中工作。虽然SQL Sever也可以使用更快的窗口集。

但是,如果你需要知道代码少于一定数量的代码,那么notulysses有条款应该适合该法案。