单表

时间:2016-11-07 10:08:34

标签: sql count group-by

我在单个表上对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>

任何帮助都会非常感激,谢谢

2 个答案:

答案 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