SQL高效统计按优先级排序的条件行
假设您有一个存储作业信息的表,其中包含一个指示优先级的列(1到5之间的整数)。为了生成一个包含按优先级显示作业计数的图表报表,您需要创建五个额外的字段,每个字段都计算具有特定优先级值的行的数量。
解决方案在于在SELECT查询中使用CASE语句。以下代码提供了一种高效且性能优良的方法来实现您期望的输出:
<code class="language-sql">SELECT jobID, JobName, SUM(CASE WHEN Priority = 1 THEN 1 ELSE 0 END) AS priority1, SUM(CASE WHEN Priority = 2 THEN 1 ELSE 0 END) AS priority2, SUM(CASE WHEN Priority = 3 THEN 1 ELSE 0 END) AS priority3, SUM(CASE WHEN Priority = 4 THEN 1 ELSE 0 END) AS priority4, SUM(CASE WHEN Priority = 5 THEN 1 ELSE 0 END) AS priority5 FROM Jobs GROUP BY jobID, JobName;</code>
此查询实质上使用SUM()函数计算每个优先级级别的行数。但是,它还使用CASE语句排除了不满足特定优先级条件的行。结果是一个表,其中包含表示条件计数的附加字段。
要仅包含作业计数,而不包含结果中的jobID和JobName,只需从SELECT语句中删除这些列并删除GROUP BY子句即可。
以上是如何在SQL中按优先级高效地计算条件行数?的详细内容。更多信息请关注PHP中文网其他相关文章!