我有一张桌子 - 比如:
A|B
1|1
1|2
1|3
2|1
2|3
2|4
2|5
3|5
我的查询返回A中的不同值,如果它们与B中的值1或2重合 - 那么
A
1
2
我也试图在A栏中返回1和2的原始计数 - 得到类似
的内容A|Count
1|3
2|4
有没有一种简单的方法来计算这个数量? 但是,COUNT(A)返回与初始WHERE语句一致的A的数量:
A|Count
1|2
2|1
谢谢!
答案 0 :(得分:2)
我的SQL可能有点生疏,但我认为你可以这样做:
SELECT A, count(*) AS Count FROM MyTable WHERE B IN (1, 2) GROUP BY A;
答案 1 :(得分:1)
另一种方式:
SELECT a, (SELECT count(*) FROM t t2 WHERE t2.a = t.a) a_count
FROM t
WHERE b IN (1,2)
GROUP BY a
答案 2 :(得分:0)
SELECT t1.A, COUNT(DISTINCT t1.B)
FROM MyTable t1 JOIN MyTable t2 ON (t1.A = t2.A)
WHERE t2.A = t2.B
GROUP BY t1.A;
答案 3 :(得分:0)
类似于Bill Karwin的回答:
SELECT
A,
Counted.CountOfB
FROM
MyTable
INNER JOIN (
SELECT A, COUNT(B) AS CountOfB
FROM MyTable
GROUP BY A
) Counted ON Counted.A = MyTable.A
WHERE
{your filter for MyTable}