MySQL Group三列数据

时间:2017-02-22 07:49:53

标签: mysql group-by calc

亲爱的同事,祝你好运!

拜托,有人可以告诉我如何从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列? 感谢您提前帮助!

2 个答案:

答案 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 ALLGROUP_CONCAT的组合。

<强>查询

CONCAT

<强> SQL Fiddle