SQL算吗?不知道该怎么做
SQL count? Not sure how to go about
基本上我有一个 table 有帐户和代码。代码是 4 位代码 CAWE CPEE CWWE CBEW 等。
每次访问帐户时,它都会在上面留下一个代码。
所以账号30040可以在这个table500次。
我想弄清楚如何提取具有 CBEW 代码且只有 1 个访问条目的帐户。
请帮助我:)
我是 SQL 的新手,所以请多关照!
您可以使用 group by
和 having
:
select accnt
from table
group by accnt
having count(*) = 1 and max(code) = 'CBEW';
这会找到只有一行的帐户,并确保该行包含您要查找的代码。
这应该可以满足您的要求
SELECT accnt FROM mytable
WHERE code = 'CBEW'
GROUP BY code
HAVING COUNT(code) = 1
我突然想到了 WITH 子句。是这样的:
(注意:我没有检查过这段代码;不过应该是正确的)
WITH OnceAccessedAccounts AS (
SELECT accnt, COUNT(*)
FROM AccntCodeTable
GROUP BY accnt
HAVING COUNT(*) = 1
)
SELECT
ACT.accnt
FROM
AccntCodeTable ACT
WHERE
(ACT.accnt IN (OnceAccessedAccounts.accnt))
AND (ACT.Code = 'CBEW')
基本上我有一个 table 有帐户和代码。代码是 4 位代码 CAWE CPEE CWWE CBEW 等。 每次访问帐户时,它都会在上面留下一个代码。 所以账号30040可以在这个table500次。 我想弄清楚如何提取具有 CBEW 代码且只有 1 个访问条目的帐户。
请帮助我:) 我是 SQL 的新手,所以请多关照!
您可以使用 group by
和 having
:
select accnt
from table
group by accnt
having count(*) = 1 and max(code) = 'CBEW';
这会找到只有一行的帐户,并确保该行包含您要查找的代码。
这应该可以满足您的要求
SELECT accnt FROM mytable
WHERE code = 'CBEW'
GROUP BY code
HAVING COUNT(code) = 1
我突然想到了 WITH 子句。是这样的: (注意:我没有检查过这段代码;不过应该是正确的)
WITH OnceAccessedAccounts AS (
SELECT accnt, COUNT(*)
FROM AccntCodeTable
GROUP BY accnt
HAVING COUNT(*) = 1
)
SELECT
ACT.accnt
FROM
AccntCodeTable ACT
WHERE
(ACT.accnt IN (OnceAccessedAccounts.accnt))
AND (ACT.Code = 'CBEW')