我在单个表上对2列数据进行计数和分组时遇到问题。
我的表结构: id,price,user_1,user_2
数据样本:
001 500 bergkamp cech<br>
002 100 cech ljungberg<br>
003 200 viera henry<br>
004 300 bergkamp pires<br>
005 200 lauren bergkamp<br>
我的查询:
SELECT
user_1,user_2,
count(user_1) as total1,
count(user_2) as total2
FROM
sales
group by user_1 and user_2
结果不是我想要的,
我希望输出如下:
bergkamp 3<br>
henry 1<br>
cech 2<br>
ljungberg 1<br>
lauren 1<br>
pires 1<br>
viera 1<br>
任何帮助都会非常感激,谢谢
答案 0 :(得分:1)
将两个用户列合并为一个UNION。然后按临时表结果进行分组并计算名称
select user_name, count(*)
from
(
SELECT user_1 as user_name FROM sales
union all
SELECT user_2 FROM sales
) tmp
group by user_name
答案 1 :(得分:1)
您可以使用UNION
:
SELECT t.user, COUNT(*) AS total
FROM
(
SELECT user_1 AS user
FROM sales
UNION ALL
SELECT user_2
FROM sales
) t
GROUP BY t.user