我有一个包含两列的表格:
column A column B
1 2
1 2
2 1
我想要返回总数= 3总共twos = 3
我能想到的最好的是两个查询:
SELECT sum(CASE WHEN columnA =1 THEN 1 ELSE 0 END )
+ sum(CASE WHEN columnB =1 THEN 1 ELSE 0 END )
SELECT sum(CASE WHEN columnA =2 THEN 1 ELSE 0 END )
+ sum(CASE WHEN columnB =2 THEN 1 ELSE 0 END )
这可以在一个查询中完成吗? 谢谢
答案 0 :(得分:2)
您没有指定是要将其作为2行还是2行连接。
两行有点明显(只是将每列中的所有值联合在一起,并且按照联合的结果将count(1)逐个值组合;所以我假设你想要做一行。
如果你只有1或2,那很简单:
SELECT SUM(A+B-2) 'twos', SUM(4-A-B) 'ones' FROM myTable
答案 1 :(得分:1)
SELECT SUM(IF(columnA=1, 1, 0) + IF(columnB=1, 1, 0)) as ones,
SUM(IF(columnA=2, 1, 0) + IF(columnB=2, 1, 0)) as twos
FROM myTable;
下进行。
答案 2 :(得分:0)
要在一个查询中获取所有内容,我会尝试这样的事情。
SELECT Result.Val, COUNT(Result.Val) AS Count
FROM (
SELECT ColumnA AS Val
FROM TableName
UNION
SELECT ColumnB AS Val
FROM TableName
) AS Result
GROUP BY Result.Val
答案 3 :(得分:-1)
一般来说,你会计算这样的事情:
SELECT columnA, COUNT(*) FROM myTable
GROUP BY columnA
获取columnA中所有不同值的计数。
答案 4 :(得分:-1)
SELECT COUNT(*) FROM table WHERE columnA=1 or columnB=1