Mysql 如何在组中使用sum()?
修订问题 我真的想要一组和。。。 表:商店Mysql 如何在组中使用sum()?,mysql,sum,group-concat,Mysql,Sum,Group Concat,修订问题 我真的想要一组和。。。 表:商店 +---------+--------+--------+ | shop_id | name | state | +---------+--------+--------+ | 0 | shop 0 | 5 | | 1 | shop 1 | 5 | | 2 | shop 2 | 5 | | 3 | shop 3 | 2 | +---------+-------
+---------+--------+--------+
| shop_id | name | state |
+---------+--------+--------+
| 0 | shop 0 | 5 |
| 1 | shop 1 | 5 |
| 2 | shop 2 | 5 |
| 3 | shop 3 | 2 |
+---------+--------+--------+
表:项目
+------------+--------------+
| shop | item | quantity |
+------------+--------------+
| 0 | 0 | 1 |
| 0 | 1 | 2 |
| 0 | 2 | 3 |
| 1 | 0 | 1 |
| 1 | 1 | 2 |
| 1 | 2 | 3 |
| 2 | 0 | 1 |
| 2 | 1 | 2 |
| 2 | 2 | 3 |
| 3 | 0 | 1 |
| 3 | 1 | 2 |
| 3 | 2 | 3 |
+------------+--------------+
SELECT state,SUM(i.quantity) total
FROM shops s2
LEFT JOIN items i ON i.shop=s2.shopid
WHERE state=5
GROUP by item
result #1:
+--------+---------+
| state | total |
+--------+---------+
| 5 | 3 |
+--------+---------+
| 5 | 6 |
+--------+---------+
| 5 | 9 |
+--------+---------+
But I would like the totals, like this:
result #2:
+--------+---------+---------+----------+
| state | total 0 | total 1 | total 2 |
+--------+---------+---------+----------+
| 5 | 3 | 6 | 9 |
+--------+---------+---------+----------+
or using group_concat()
result #3
+--------+---------+
| state | totals |
+--------+---------+
| 5 | 3,6,9 |
+--------+---------+
我似乎无法让group_concat获取结果1中的总计列
提前感谢更改:
group_concat(CAST(quantity AS CHAR))
到
--
据我所知,你不能在MySQL中做到这一点。仅在组_contcat()的范围内支持动态列,该组仍然将多个结果行聚合到单个列中
只有当您有固定/有限数量的
Total X
-s时,才可以在查询中明确声明它们本身。找到了一种方法:
SELECT state,GROUP_CONCAT(cast(total as char))
FROM
(
SELECT state,SUM(i.quantity) total
FROM shops s
LEFT JOIN items i ON i.shop=s.shopid
WHERE state=5
GROUP by item
) s
谢谢你的快速回答,我最初问的是正确的,但我问的不是我想要的…@mahks-我想你不可能只用一个问题就得到你想要的
SELECT s.`state`, i.`item`, SUM(i.`quantity`) AS quantities
FROM `shops` AS s
LEFT JOIN `items` AS i ON i.`shop` = s.`shopid`
WHERE s.`state` = 5
GROUP BY i.`item`
SELECT state,GROUP_CONCAT(cast(total as char))
FROM
(
SELECT state,SUM(i.quantity) total
FROM shops s
LEFT JOIN items i ON i.shop=s.shopid
WHERE state=5
GROUP by item
) s