首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用子查询在postgresql中选择姓名、电子邮件和计数

使用子查询在postgresql中选择姓名、电子邮件和计数
EN

Stack Overflow用户
提问于 2014-10-16 06:52:08
回答 3查看 1.6K关注 0票数 0

我正在尝试编写Postgres查询,以显示不同的人数,但计算实际的(非不同的)人数。

所以如果我有

代码语言:javascript
运行
复制
1  Ray ray@gmail.com
2  Ray ray@gmail.com
3  Kate kate@gmail.com

我想展示的是:

代码语言:javascript
运行
复制
Ray 2
Kate 1

==

代码语言:javascript
运行
复制
SELECT name, email, COUNT(*) 
FROM (SELECT DISTINCT name, email 
FROM people
WHERE degree = 'Gradiate') 

我得到了:

代码语言:javascript
运行
复制
ERROR:  subquery in FROM must have an alias
LINE 3: FROM (SELECT DISTINCT name, email

如何解决这个问题?

EN

回答 3

Stack Overflow用户

发布于 2014-10-16 07:28:53

您根本不需要子查询(如前所述,这将需要一个表别名)。这对你需要的东西是没有意义的。

像这样使用GROUP BY

代码语言:javascript
运行
复制
SELECT name, email, count(*) AS ct
FROM   people
WHERE  degree = 'Graduate'
GROUP  BY 1, 2;

在本例中,GROUP BY 1, 2GROUP BY name, email的缩写。Example with more details.

当然,这里必须匹配nameemail,这与您的示例中只显示name和count不同(这与您的查询相矛盾)。

票数 3
EN

Stack Overflow用户

发布于 2014-10-16 06:57:55

添加一个

代码语言:javascript
运行
复制
AS some_alias

像这样:

代码语言:javascript
运行
复制
SELECT name, email, COUNT(*) 
FROM (SELECT DISTINCT name, email 
FROM people
WHERE degree = 'Gradiate') as my_alias
票数 0
EN

Stack Overflow用户

发布于 2014-10-16 21:35:40

代码语言:javascript
运行
复制
SELECT name, count(*) AS count
FROM   people
WHERE  degree = 'Gradiate'
GROUP  BY name;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26393455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档