SQL 查询帮助:选择当月的随机员工

Posted

技术标签:

【中文标题】SQL 查询帮助:选择当月的随机员工【英文标题】:SQL Query Help: select random employee of the month 【发布时间】:2009-05-07 01:55:06 【问题描述】:

谁能告诉我如何从这个语句中获取记录

随机选择最近 x 个月内不是当月员工的员工

表员工 身份证 员工姓名

表 EmployeeOfTheMonth 身份证 员工ID 月开始日期 MonthEndedDate

非常感谢

【问题讨论】:

参见petefreitag.com/item/466.cfm 选择随机行。 使用 Linq? (基于您的标签) 本月最佳员工是您公司的 RANDOM?大声笑 @Deviant 哈哈,应该让每个人都开心;) 【参考方案1】:
select top 1 id from employee as emp 
where not exist(
    select top 1 * 
      from employeeofthemonth as em 
      where em.id = emp.id and dateadd(m, -6, getdate()) < monthendeddt )
order by newid()

...或类似的东西。我没有运行 sql,但是在 mssql 服务器上,这应该是正确的。

【讨论】:

好像他想要 Linq 的东西。 这个查询对性能有什么影响?随着记录数量的增加,它似乎会成为一个瓶颈。【参考方案2】:

修改最后一个答案,我更喜欢用 IN 语句


DECLARE @xMonth INT
SET @xMonth = 3

SELECT TOP 1 ID FROM Employee WHERE ID NOT IN (SELECT EmployeeID FROM EmployeeOfTheMonth WHERE DATEADD(m, -@xMonth, GETDATE()) < MonthEndedDate) ORDER BY NEWID()

【讨论】:

以上是关于SQL 查询帮助:选择当月的随机员工的主要内容,如果未能解决你的问题,请参考以下文章

SQL - 帮助根据比例和唯一 ID 选择随机日期

如何在 SQL 中随机选择行?

随机 10% 的 SQL 查询,最少 20 行

从表中随机选择行 - Python Pandas 读取 SQL

从表中随机选择行 - Python Pandas Read SQL

在 MySQL 中选择随机查询