获取相同两列之间的出现次数 table
get number of occurrences between two columns same table
我在如何获取 MySQL 中两列之间某个值的出现次数方面遇到问题。
id1 col1 col2
2 5 3
3 3 4
4 2 1
5 1 3
6 null 2
我怎样才能像下面这样得到两列之间出现的次数?
value occurrence
3 3
1 2
2 2
4 1
5 1
您可以 union all
列,然后应用 count
聚合函数:
SELECT val, COUNT(*) AS occurrence
FROM (SELECT col1 AS val
FROM mytable
UNION ALL
SELECT col2 AS val
FROM mytable) x
GROUP BY val
ORDER BY occurrence DESC
根据实际数据(每个值的行数)预聚合可能更有效,只需尝试一下:
SELECT val, SUM(occurrence) AS occurrence
FROM (SELECT col1 AS val, COUNT(*) AS occurrence
FROM mytable
UNION ALL
SELECT col2 AS val, COUNT(*) AS occurrence
FROM mytable) x
GROUP BY val
ORDER BY occurrence DESC
我在如何获取 MySQL 中两列之间某个值的出现次数方面遇到问题。
id1 col1 col2
2 5 3
3 3 4
4 2 1
5 1 3
6 null 2
我怎样才能像下面这样得到两列之间出现的次数?
value occurrence
3 3
1 2
2 2
4 1
5 1
您可以 union all
列,然后应用 count
聚合函数:
SELECT val, COUNT(*) AS occurrence
FROM (SELECT col1 AS val
FROM mytable
UNION ALL
SELECT col2 AS val
FROM mytable) x
GROUP BY val
ORDER BY occurrence DESC
根据实际数据(每个值的行数)预聚合可能更有效,只需尝试一下:
SELECT val, SUM(occurrence) AS occurrence
FROM (SELECT col1 AS val, COUNT(*) AS occurrence
FROM mytable
UNION ALL
SELECT col2 AS val, COUNT(*) AS occurrence
FROM mytable) x
GROUP BY val
ORDER BY occurrence DESC