使用聚合别名的地方
where using alias of aggregate
这个查询
select r1.name, count(stars) as reviewCount
from (reviewer r1 join reviewer r2 using(rID)) join rating using(rID)
group by r1.name;
产生以下输出
+------------------+--------------+
| name | reviewCount |
+------------------+--------------+
| Ashley White | 1 |
| Brittany Harris | 3 |
| Chris Jackson | 3 |
| Daniel Lewis | 1 |
| Elizabeth Thomas | 2 |
| James Cameron | 1 |
| Mike Anderson | 1 |
| Sarah Martinez | 2 |
+------------------+--------------+
我想列出 reviewCount > 3 的用户,如下所示
+------------------+--------------+
| name | reviewCount |
+------------------+--------------+
| Brittany Harris | 3 |
| Chris Jackson | 3 |
+------------------+--------------+
我试过使用 where 和 having 子句,但结果是 Empty set (0.01 sec)
select r1.name, count(stars) as reviewCount
from (reviewer r1 join reviewer r2 using(rID)) join rating using(rID)
group by r1.name
having reviewCount > 3;
我缺少什么?
edit1 : 参考 样本数据进行测试
编辑 2:还有谁能建议我如何在不使用计数和
的情况下编写此查询
结果实际上是正确的,但您的查询需要稍作修改。您需要使用 >=
而不是 >
HAVING reviewCount >= 3;
我宁愿使用聚合列也不愿使用它的别名,因为它适用于大多数 RDBMS。
HAVING count(stars) >= 3
这个查询
select r1.name, count(stars) as reviewCount
from (reviewer r1 join reviewer r2 using(rID)) join rating using(rID)
group by r1.name;
产生以下输出
+------------------+--------------+
| name | reviewCount |
+------------------+--------------+
| Ashley White | 1 |
| Brittany Harris | 3 |
| Chris Jackson | 3 |
| Daniel Lewis | 1 |
| Elizabeth Thomas | 2 |
| James Cameron | 1 |
| Mike Anderson | 1 |
| Sarah Martinez | 2 |
+------------------+--------------+
我想列出 reviewCount > 3 的用户,如下所示
+------------------+--------------+
| name | reviewCount |
+------------------+--------------+
| Brittany Harris | 3 |
| Chris Jackson | 3 |
+------------------+--------------+
我试过使用 where 和 having 子句,但结果是 Empty set (0.01 sec)
select r1.name, count(stars) as reviewCount
from (reviewer r1 join reviewer r2 using(rID)) join rating using(rID)
group by r1.name
having reviewCount > 3;
我缺少什么?
edit1 : 参考
编辑 2:还有谁能建议我如何在不使用计数和
的情况下编写此查询结果实际上是正确的,但您的查询需要稍作修改。您需要使用 >=
而不是 >
HAVING reviewCount >= 3;
我宁愿使用聚合列也不愿使用它的别名,因为它适用于大多数 RDBMS。
HAVING count(stars) >= 3