mysql - 如何对从mysql中的一列检索到的结果进行分组

标签 mysql

我想做这样的事情:

SELECT sum(quantity) 
FROM orders
WHERE order_code between **code1** and **code2** as group1 
and order_code between **code3** and **code4** as group2
and order_code between **code5** and **code6** as group3

最佳答案

如果您想要一行三列:

SELECT SUM(IF(order_code BETWEEN ... AND ..., quantity, 0)), -- group1
       SUM(IF(order_code BETWEEN ... AND ..., quantity, 0)), -- group2
       SUM(IF(order_code BETWEEN ... AND ..., quantity, 0))  -- group3
  FROM orders
;

如果您想要一列三行:

SELECT group_number,
       SUM(quantity)
  FROM ( SELECT quantity,
                CASE WHEN order_code BETWEEN ... AND ... THEN 1 -- group1
                     WHEN order_code BETWEEN ... AND ... THEN 2 -- group2
                     WHEN order_code BETWEEN ... AND ... THEN 3 -- group3
                     ELSE NULL
                 END AS group_number
           FROM orders
       ) AS t
 WHERE group_number IS NOT NULL
 GROUP
    BY group_number
;

(子查询实际上并不是必需的,但我认为它可以更清楚地说明发生了什么)。

关于mysql - 如何对从mysql中的一列检索到的结果进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9957631/

相关文章:

MySql 内存引擎不检查更新外键?

php - 密码中的美元符号导致错误

mysql - IronWorker 无法连接到我的本地 mysql 数据库

php - 如何防止 PHP 中的 SQL 注入(inject)?

php - MySQL Datediff - 问题是什么?

mysql - SQL按日期查询

php - 在前端搜索中显示最新的 mysql 行

php - SQL 从表中选择匹配的最低 ID 的所有行

mysql - 将 MySQL 数据库迁移到 Firebird Server 2.5

php - 检查循环中多个数组的值