首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用某个列mysql查询计数正负值组的数目

问用某个列mysql查询计数正负值组的数目
EN

Stack Overflow用户
提问于 2013-12-13 17:29:15
回答 1查看 4.5K关注 0票数 4

下面是mysql表的布局:

代码语言:javascript
复制
+------+-------+-----+------+
| user |subject|month|change|
+------+-------+-----+------+
|Donald| Math  | Jan | 3.15 |
+------+-------+-----+------+
| Mike | Math  | Jan | 2.15 |
+------+-------+-----+------+
|Regan | Math  | Jan | 3.00 |
+------+-------+-----+------+
|Donald| Engl  | Febr|-3.05 |
+------+-------+-----+------+
| Mike | Engl  | Febr| 3.00 |
+------+-------+-----+------+
|Regan | Engl  | Febr|-3.00 |
+------+-------+-----+------+
|Donald| Geog  | Jan | 3.00 |
+------+-------+-----+------+
| Mike | Geog  | Jan |-2.15 |
+------+-------+-----+------+
|Regan | Geog  | Jan | 3.60 |
+------+-------+-----+------+

我要按科目数正或负变化组,同时得到小组的名称。如果我像这样查询mysql表:

代码语言:javascript
复制
COUNT (*) FROM $table WHERE change>0 GROUP BY subject

它将只按主题列计算正变化(>0)组的数目。不可能获得负更改的数量(<0)并获得组名(Math、Eng & Geog)。

我希望结果应该是这样:

代码语言:javascript
复制
===============
Group | >0| <0|
===============
 Math | 3 | 0 | 
---------------
 Eng  | 1 | 2 |
---------------
 Geog | 2 | 1 |
---------------

为了获得像上面这样的结果,什么是单一的mysql查询?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-13 17:33:05

下面的查询将按subject对记录进行分组。MySQL支持布尔算法,因为a.change > 0返回1表示true,0返回false。

代码语言:javascript
复制
SELECT  a.Subject,
        SUM(a.change > 0) `> 0`,
        SUM(a.change < 0) `< 0`
FROM    tableName a
GROUP   BY a.Subject

注意,它不包括change = 0中的主题。

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

https://stackoverflow.com/questions/20572494

复制
相关文章

相似问题

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