php - mysql 总和值 GROUP BY 分割

标签 php mysql

mysql 总和 GROUP BY

ID  NAME    TYPE    TOTAL
1   user1   1       5
2   user1   2       10
3   user2   1       5
4   user2   1       10
5   user3   3       20
6   user2   3       10
.........

名称类型划分的分组总数

我想要这个结果

NAME    TYPE1   TYPE2   TYPE3   TYPE4   TYPE5
user1   5       10      0       0       0
user2   15      0       10      0       0
user3   0       0       20      0       0
---------------------------------------------
Total   20      10      30      0       0

php 和 mysql((最大类型 9)) 谢谢!!!!

演示表

CREATE TABLE `test_table` (
  `id` int(10) NOT NULL,
  `name` varchar(10) NOT NULL,
  `type` varchar(1) NOT NULL,
  `total` int(10) NOT NULL
) ENGINE=MEMORY DEFAULT CHARSET=latin1;

INSERT INTO `test_table` (`id`, `name`, `type`, `total`) VALUES(1, 'user1', '1', 5),(2, 'user1', '5', 5),(3, 'user1', '2', 5),(4, 'user1', '3', 5),(5, 'user1', '4', 5),(6, 'user1', '1', 10),(7, 'user1', '2', 15),(8, 'user1', '3', 15),(9, 'user1', '4', 15),(10, 'user1', '5', 15),(11, 'user2', '1', 5),(12, 'user2', '5', 5),(13, 'user2', '2', 5),(14, 'user2', '3', 5),(15, 'user2', '4', 5),(16, 'user2', '1', 10),(17, 'user2', '2', 15),(18, 'user2', '3', 15),(19, 'user2', '4', 15),(20, 'user2', '5', 15),(21, 'user3', '1', 5),(22, 'user3', '5', 5),(23, 'user3', '2', 5),(24, 'user3', '3', 5),(25, 'user3', '4', 5),(26, 'user3', '1', 10),(27, 'user3', '2', 15),(28, 'user3', '3', 15),(29, 'user3', '4', 15),(30, 'user3', '5', 15),(31, 'user4', '1', 5),(32, 'user4', '5', 5),(33, 'user4', '2', 5),(34, 'user4', '3', 5),(35, 'user4', '4', 5),(36, 'user4', '1', 10),(37, 'user4', '2', 15),(38, 'user4', '3', 15),(39, 'user4', '4', 15),(40, 'user4', '5', 15),(41, 'user5', '1', 5),(42, 'user5', '5', 5),(43, 'user5', '2', 5),(44, 'user5', '3', 5),(45, 'user5', '4', 5),(46, 'user5', '1', 10),(47, 'user5', '2', 15),(48, 'user5', '3', 15),(49, 'user5', '4', 15),(50, 'user5', '5', 15);

最佳答案

这应该可以解决问题:

SELECT
    tt.`name` AS NAME,
    SUM(CASE WHEN tt.type = 1 THEN tt.total ELSE 0 END) AS TYPE1,
    SUM(CASE WHEN tt.type = 2 THEN tt.total ELSE 0 END) AS TYPE2,
    SUM(CASE WHEN tt.type = 3 THEN tt.total ELSE 0 END) AS TYPE3,
    SUM(CASE WHEN tt.type = 4 THEN tt.total ELSE 0 END) AS TYPE4,
    SUM(CASE WHEN tt.type = 5 THEN tt.total ELSE 0 END) AS TYPE5,
    SUM(CASE WHEN tt.type = 6 THEN tt.total ELSE 0 END) AS TYPE6,
    SUM(CASE WHEN tt.type = 7 THEN tt.total ELSE 0 END) AS TYPE7,
    SUM(CASE WHEN tt.type = 8 THEN tt.total ELSE 0 END) AS TYPE8,
    SUM(CASE WHEN tt.type = 9 THEN tt.total ELSE 0 END) AS TYPE9
FROM
    test_table AS tt
GROUP BY
    tt.`name`

关于php - mysql 总和值 GROUP BY 分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48131044/

相关文章:

mysql - 为什么这个 strcmp() 语法在 mysql-5.7 中给我一个错误?

mysql - #1005 - 无法创建表 `musicplayer` .`Albums`(错误号 : 150 "Foreign key constraint is incorrectly formed")

python - 如何生成 500 个随机订单,其中项目在 python 中按 (1,5) 的顺序均匀分布?

MySQL:从组中选择最后一个,但有条件

mysql - Mariadb 10.1.26 递归查询

php - 使用正则表达式固定某些元素的宽度

php mysql 如果 varchar 不为空

php - (PHP) rawurlencode/decode 似乎将 '£' 符号编码为 '£'(%C2%A3 而不是 %A3)

php - HTTPS 和 SSL3_GET_SERVER_CERTIFICATE :certificate verify failed, CA 没问题

javascript - 滚动加载更多 SQL 限制