首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将要查找的记录的权重添加到最匹配的结果

如何将要查找的记录的权重添加到最匹配的结果
EN

Stack Overflow用户
提问于 2018-08-29 07:43:46
回答 1查看 33关注 0票数 0

我正在开发一个使用SQL C#和ASP.net数据库服务的web应用程序。我有三个主要的表:

代码语言:javascript
复制
Services: ( more than 10K records)

Service_Id      Service_Description 
 1               Clean
 2               Oil Change
 3               Fluid Services
 4               Filter Replacement

另一张表用于客户请求

代码语言:javascript
复制
Customer_Requests:
Customer_ResuestId      Customer_RequstedServices 
 1                      1
 1                      2
 1                      3
 1                      4
 2                      4
 2                      5

第三个主表是分支(我有500个分支;每个分支都提供特定的服务)

代码语言:javascript
复制
Branches:
Branch_Id      Branch_AvailabeServices 
 1               1
 1               2
 1               3
 2               1
 2               2
 2               3
 2               4

我的问题是,如何为每个Customer_RequstedServices添加权重,并找到最匹配的结果。例如,我希望结果是这样的:

客户请求#1

具有4服务请求(每个请求的为25%)

分支#2为提供了100%的请求,分支#1为提供了75%的请求。

我想首先展示一下分支机构#2,因为它可以满足所有客户的需求。

我可以通过使用以下命令来获得权重:

代码语言:javascript
复制
Select count(Customer_ResuestId) as ServiceCount from Customer_Requests

然后我可以执行100/ServiceCount来获得每条记录的权重。

但我不知道如何才能找到每个分支机构可以为每个特定请求提供哪些服务。

任何帮助都将不胜感激。如果权重不能/难以测量,那么找到提供最多请求服务的分支将是非常好和可接受的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-29 08:11:51

这应该可以做到:

代码语言:javascript
复制
SELECT 
    Customer_ResuestId, 
    (Select Count(*) From Customer_Requests AS CRc 
        WHERE CR.Customer_ResuestId= CRC.Customer_ResuestId) as RequestedServices,
    Branch_Id, 
    Count(*) as MatchingServicesOffered 
FROM CustomerRequests CR 
INNER JOIN Branches B 
    ON B.Branch_AvailabeServices = CR.Customer_RequstedServices 
GROUP BY Customer_ResuestId, 
    Branch_Id 
ORDER BY Count(*) DESC
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52067574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档