首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组中第一值

组中第一值
EN

Stack Overflow用户
提问于 2014-03-10 19:39:07
回答 4查看 96关注 0票数 1

我希望根据组中的第一个(实际上,仅)值在group by表中设置一个列。

特别是,给出一张表

代码语言:javascript
复制
id   good
1    t
1    t
2    f
3    t

我想要生产这张桌子

代码语言:javascript
复制
id    multiplicity  goodN
1     2             0
2     1             0
3     1             1

其中goodN为1当且仅当multiplicity为1,goodt

代码语言:javascript
复制
select id, count(*) as multiplicity,
       if (count(*) > 1, 0, if(good = 't', 1, 0)) as goodN
from ...

问题是:如何从组中提取good的第一个值(仅在我的例子中)?

PS。是否有比count(*)=1更便宜的方法来测试组的大小1?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-03-10 20:22:45

如果计数为1,则最大(很好)和最小(很好)都将是组中的“第一”行。

代码语言:javascript
复制
select id, count(*) as multiplicity,
       if (count(*) > 1, 0, if(max(good) = 't', 1, 0)) as goodN
from ...
票数 1
EN

Stack Overflow用户

发布于 2014-03-10 19:47:21

从..。其中id=(选择min(id)从.好的>0)

组按id有计数(Id)=1

您可以测试count(goods)而不是count(*),并在最后按id添加组。只取有磨耗性的记录1加有计数(货物)=1

票数 0
EN

Stack Overflow用户

发布于 2014-03-10 20:06:00

如果是MySQL,那么简单地说:

代码语言:javascript
复制
SELECT id,
       good,
       count(*) AS multiplicity,
       if((count(*) > 1 AND good = 't'), @flag := 1, @flag := 0) AS goodN
  FROM goods
GROUP BY good, id;

如果你想让我删除我的答案,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22309687

复制
相关文章

相似问题

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