[英]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`
这是使用标准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.