繁体   English   中英

计算SQL表中两列的重复项

[英]counting duplicates from two columns in a SQL table

我绝不是SQL专家,所以如果这很简单,请原谅。 我有一个表,用于存储客户选择的品牌,他们最多可以选择两个品牌。 我需要计算单个品牌的条目和组合,但遇到麻烦,我需要将a + b的组合与b + a相同。 到目前为止,我已经:

SELECT DISTINCT brand, brand2, count(*) FROM table GROUP BY brand, brand2;

这使我从此表中获得此输出,而“期望”正是我想要的结果

     table                  output                        desired

brand | brand2|      brand | brand2| count(*)|    brand | brand2| count(*)|
  a   |   b   |        a   |   b   |     1   |      a   |   b   |     2   |
  b   |       |        b   |       |     2   |      b   |       |     2   |
  c   |   b   |        c   |   b   |     1   |      c   |   b   |     2   |
  b   |       |        b   |   a   |     1   |      e   |       |     1   |
  b   |   a   |        b   |   c   |     1   |
  b   |   c   |        e   |       |     1   |
  e   |       |

我希望这很明显,我真的只是在这里被封锁。 不知道如何获得所需的输出。 我感谢所有帮助。

尝试这个:

select
    substring_index(concat_ws(',', `brand`, `brand2`), ',', 1) as `brand`,
    substring_index(concat_ws(',', `brand`, `brand2`), ',', -1) as `brand2`,
    count(*)
from yourtable
group by case when `brand` > `brand2` then concat(`brand`, `brand2`)
              else concat(`brand2`, `brand`) end
order by `brand`

SqlFiddle演示

这是使用标准sql的方法。

select
    case when brand >= brand2 and brand2 <>'' then brand2 else brand end as `brand`,
    case when brand >= brand2 and brand2 <>'' then brand else brand2 end as `brand2`,
    count(*)
from yourtable
group by 1,2               
order by 1,2

在这里摆弄

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM