拜托,有人可以告诉我如何从3列组成一个小组吗?例如,在一个表中有三个相同类型的A,B,C列,它们存储相同类型的数据,例如:“bread”,“water”,“chocolate”。我们还有日期栏。
看起来像是:
Col_A | Col_B | Col_C | Date
--------- | --------- | ------- | ----------
Bread | Null | Water | 19.01.2016
Bread | Bread | Water | 22.02.2016
Chocolate | Chocolate | Null | 18.03.2016
我想计算按月分组销售的产品数量? 期待结果:
January -> Bread 1, Water 1
February ->Bread 2, Water 1
March -> Chocolate 2
对于一列,我使用了以下查询:
SELECT A, COUNT(A) FROM MyDB GROUP BY month(Date)
但我不知道如何计算3列? 感谢您提前帮助!
答案 0 :(得分:1)
当然,你必须将它们全部放在一列中:)
SELECT my_column, COUNT(my_column) FROM (
SELECT Col_A AS my_column FROM your_table
UNION ALL
SELECT Col_B FROM your_table
UNION ALL
SELECT Col_C FROM your_table
) sq
GROUP BY my_column;
另外,您应该考虑重新设计数据库。如您所见,此表不是最理想的。
答案 1 :(得分:0)
使用$arr = array(
array(
"totalprice" => "671",
"total" => "0",
"price_per_p" => 2,
),
array(
"totalprice" => "312",
"total" => "0",
"price_per_p" => 2,
)
);
将值作为列获取,并使用UNION ALL
和GROUP_CONCAT
的组合。
<强>查询强>
CONCAT
<强> SQL Fiddle
强>