我有这个分组问题,我似乎无法弄明白。任何建议将不胜感激!我们说我有一张这样的桌子:
Name Passed? PlanID Plan
-----------------------------------------
Tom 1 1 Math
Tom 1 1 Reading
Tom 0 2 Math
Tom 0 2 Reading
Tom 0 3 Math
Tom 0 3 Reading
Bobby 1 1 Math
Bobby 0 1 Reading
Bobby 1 2 Math
Bobby 1 2 Reading
Bobby 0 3 Math
Bobby 0 3 Reading
Linda 0 1 Math
Linda 1 1 Reading
Linda 0 2 Math
Linda 1 2 Reading
Linda 1 3 Math
Linda 1 3 Reading
我想要完成的是这样的事情:
Name Passed? PlanID
---------------------------
Tom 1 1
Bobby 1 2
Linda 1 3
所以基本上,如果第一个planID没有通过,请查看第二个。如果没有通过,请查看第三个。我遇到的问题是所有PlanID都是3或1,或者Passed列中的所有值都是0。
我尝试过这样的查询:
CASE
WHEN MIN(Passed?) = 1
THEN MIN(PlanID)
ELSE MAX(PlanID)
END
我意识到最大和最小只会产生3或1,但我不知道怎么回事。谢谢!
编辑:抱歉,忘了提一下,如果一个人已经传递了一个planID,那么其余的planID应该读作传递。因为Bobby第一次没有通过这两个计划,所以他必须再次接受。自从他第二次通过以来,他不需要第三次参加。如果有意义的话,一个人必须通过这两个计划才算过去。我已经添加了几行,希望能够传达我更好的想法。我可能也会让自己有点混乱。
答案 0 :(得分:0)
如果刚刚过去了? = 1
select * from table where Passed? = 1
根据需要返回
答案 1 :(得分:0)
如果我们可能会看到同一个名字的多个通行证而你只想拿起第一个通行证,请使用以下查询:
select pass.name, pass.passed, pass.planID
from
(Select name, passed, planID
from table
where passed = 1) pass,
(Select name, min(planID) planId
from table
where passed = 1) min
where pass.planID= min.planID and pass.name = min.name
如果只能进行一次传球,您只需选择传球:
select * from table where Passed = 1
答案 2 :(得分:0)
您可以使用exists
子查询来检查此planID
是否存在较小的Name
。
SELECT *
FROM YourTable T1
WHERE Passed = 1
AND NOT EXISTS (SELECT 1
FROM YourTable T2
WHERE T1.Name = T2.Name
AND T1.planID > T2.planID
AND T2.Passed = 1 )
答案 3 :(得分:0)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tbody id="tblRootCauseBody">
<tr>
<th>Public Safety</th>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td></td>
</tr>
<tr>
<th>SSW/MS</th>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td>
<div class="text-center">
<label class="checkbox-inline">
<input type="checkbox" class="chkRootCauseSummary" />
</label>
</div>
</td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
答案 4 :(得分:0)
这个有点棘手,因为我考虑了很少的信息并考虑了以下边缘情况:
此外,这假设最新作品是“自然顺序”的最后一个(插入记录时,而不是PlanID)。
以下内容适用于所有情况。
SELECT
Name,
Passed=MAX(Passed),
PlanID=MAX(PlanID)
FROM
(
SELECT
Flag=DENSE_RANK() OVER(PARTITION BY Name ORDER BY Name,Passed DESC) ,
Name,
Passed,
PlanID
FROM
(
SELECT
Name,
PlanID,
Passed
FROM
Table
)AS X
)AS Y
WHERE
Flag=1
GROUP BY
Name