我正在创建一个C#应用程序我将通过一个简单的例子来解释我想要的东西:
考虑这张表:
name age reply choice
------+-------+-------+-------
John 10-20 yes apple
Kate 20-30 yes orange
Sam 10-20 yes apple
Peter 10-20 no ----
Tom 20-30 no ----
Mike 10-20 yes orange
我想为所有回复的人制定预测性“年龄”决策树。然后预测那些没有回复的人的选择。
该表保存在SQL Server 2008数据库中。 SQL Server 2008中有一个功能允许这样做。我搜索了Microsoft帮助网站,但我没有找到任何关于如何使用它的明确指南。
我如何在我的C#代码中使用它,任何人都有分步指南吗?
答案 0 :(得分:3)
这样可以解决问题:
-- create table
declare @t table (name varchar(50), age varchar(50), reply varchar(3), answer varchar(50))
insert @t (name, age, reply, answer)
values ('John', '10-20', 'yes', 'apple'),
('Kate', '20-30', 'yes', 'orange'),
('Sam', '10-20', 'yes', 'apple'),
('Peter', '10-20', 'no', '----'),
('Tom', '20-30', 'no', '----'),
('Mike', '10-20', 'yes', 'orange')
-- get answer
select t.name, t.age, t.reply, case t.reply when 'yes' then t.answer else w.answer end answer
from @t t
left join (
select age, answer
from (
select age, answer, count(*) cnt, row_number() over (partition by age order by count(*) desc) rnk
from @t
where reply = 'yes'
group by age, answer
) s
where rnk = 1
) w on t.age = w.age
找出每个年龄段提供的答案最多的答案,然后在没有给出答案的情况下选择答案。
当2个答案之间存在平局时,它只选择一个答案。我认为最先出现的那个并不能保证它会一直这样做。
请注意,如果你有一个答案是A:B = 55%:45%的小组,那么所有没有答案的人都会得到答案A,所以你要通过这样做来改变人口的平均数。你知道吗