sql - SQL Server - 选择用户最频繁记录的列的值
问题描述
我有 1 个名为 的表day_shift
,其中包含列employee_id
:shop_id
和date
。
我需要为我的数据库表创建 SELECT 查询以获取shop_id
每个employee_id
按最高数量的date
-records 排序的查询。主要思想: 员工可以在任何商店工作,程序按订单添加白班shop_id
日期,但员工将被分配到出现频率更高的部门。
仅给出表中第一条记录的实际查询employee_id
:
SELECT TOP 1 shop_id FROM day_shift WHERE employee_id = ?1 ORDER BY date desc
如何获得用户shop_id
最频繁的相等记录date
?
[编辑 1]:表也包含列id
,但我不在查询中使用它。
解决方案
获取按最高日期记录排序的每个employee_id 的shop_id。
我认为您正在使用 SQL Server。无论如何,基于您的查询语法,您将使用:
SELECT TOP (1) WITH TIES employee_id, shop_id, date, COUNT(*)
FROM day_shift
GROUP BY employee_id, shop_id, date
ORDER BY ROW_NUMBER() OVER (PARTITION BY employee_id ORDER BY COUNT(*) DESC);
如果您只想为一名员工提供此服务:
SELECT TOP (1) employee_id, shop_id, date, COUNT(*)
FROM day_shift
WHERE employee_id = ?
GROUP BY employee_id, shop_id, date
ORDER BY COUNT(*) DESC;
推荐阅读
- sql - 将行数转换为列的 SQL 查询
- python - 如何在多个 Python 列表的元素之间插入元素?
- android - 包名称和应用包名称有什么区别?
- python - 在 python 中,什么时候使用 Apply、Lambda 而什么都不使用?基本概念问题
- python-3.x - 如何在循环中将项目添加到 numpy hstack?
- swift - 如何在 SwiftUI 中动态调整可垂直滚动的 VStack 中的一行中的项目数?
- c# - 在 Web API 上验证 Azure AD ID 令牌
- javascript - 将 Js Lazy load(无外部插件)与响应式图像断点 data-srcset 结合使用。我应该如何解决这个问题?
- amazon-web-services - Docker 容器在使用 AWS ECR 的 AWS ECS 中不起作用
- r - 从R中的文本列中模糊提取名称(存储在向量中)