首页 > 解决方案 > SQL Subselect 在一行中计算

问题描述

我无法让 SQL 选择工作。

我有一张桌子 - 下面是示例:

|id|name  |hits|
|1 |peter | 6  |
|2 |john  | 13 |
|3 |max   | 12 |
|4 |foo   | 8  |
|5 |bar   | 4  |

我想计算一个输出中 10 个命中以下的每个条目和超过 10 个命中的每个条目的总和。

如下所示:

|sum-over-10|sum-under-10|
| 25        | 18         |

我尝试了内部联接和外部联接,但我认为这是错误的方法。如果我进行子选择,它总是按主选择过滤。

不知道如何从这里开始 :-) 将很高兴并感谢您的任何建议!

标签: sqlsubquery

解决方案


只需使用条件聚合:

select sum(case when hits < 10 then hits else 0 end),
       sum(case when hits > 10 then hits else 0 end)
from t;

注意:结果不包括hits = 10. 你可能想要<=或者>=如果你想要包括这些。


推荐阅读