php - MySQL SUM、ORDER BY 等

标签 php mysql

我有这张 table :
Table

我需要什么: 如果 m = '7',则求 SUM(v+t+p);如果 m = '8',则求 SUM(v+t+p),然后对其进行排序(如果 m = '8,则通过减去 (SUM(v+t+p)) ')-SUM(v+t+p) 如果 m = '7')。

最佳答案

这是您正在寻找的内容的非常普遍的形式(可能):

SELECT [somestuff?] 
, SUM(IF([condition1], [calculation1], 0) AS X1
, SUM(IF([condition2], [calculation2], 0) AS X2
FROM theTable
WHERE [something]
GROUP BY [something else]
ORDER BY X1 - X2
;

有几个部分可能是可选的。

更具体地说...

SELECT SUM(IF(m = '8', v+t+p, 0) AS sum8
, SUM(IF(m = '7', v+t+p, 0) AS sum7
FROM theTable
ORDER BY sum8-sum7  // This ORDER BY won't really do anything; 
                    // there is only one row since we didn't 
                    // GROUP BY anything
;

编辑: (为你的后口袋节省一些时间,希望有用)

create table thing
(   id int auto_increment primary key,
    n int not null,
    m int not null,
    v int not null,
    t int not null,
    p int not null
);

insert thing(n,m,v,t,p) values (2,8,0,0,0);
insert thing(n,m,v,t,p) values (14,8,0,0,0);
insert thing(n,m,v,t,p) values (48,7,123,123,123);
insert thing(n,m,v,t,p) values (48,8,12,1,2);
insert thing(n,m,v,t,p) values (390,8,0,0,0);

编辑:

SELECT n
, SUM(IF(m = '8', v+t+p, 0) AS sum8
, SUM(IF(m = '7', v+t+p, 0) AS sum7
, SUM(IF(m = '8', v+t+p, 0)
  - SUM(IF(m = '7', v+t+p, 0) AS sumDiff
FROM the_table
GROUP BY n
ORDER BY sumDiff
;

关于php - MySQL SUM、ORDER BY 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31953975/

相关文章:

php - 菜单不会阻塞

php - 使用MySql从逗号分隔的字符串中提取行

php - 排队包含 PHP 变量的 WP 脚本

php - 正则表达式按 %%%%%%[%%%%][%%%%%%%%] 分割并丢失括号

mysql - 从 postgres 迁移到 mysql 导致奇怪的错误 Mysql2::Error: MySQL server has gone away

php - 查询 where timestamp < timestamp 不起作用?

mysql - SQL查询如果不为空输入字段值

php - 当我添加 'files' => true 时,Laravel 表单不返回输入

mysql - Zend_Db 使用多个数据库?

php - 使用 PHP 和 codeigniter 显示带有 foreach 函数的固定表