【问题标题】:Access sql combine SELECT and COUNT function访问sql结合SELECT和COUNT函数
【发布时间】:2014-10-13 21:08:05
【问题描述】:

全部。我的桌子看起来像

NAME1 NAME2  Result
Jone  Jim     win
Kate  Lucy    loss
Jone  Lucy    win
Jim   Jone    loss

我想从 NAME1 中选择 win case>=3,我的代码是

SELECT NAME1,Count(Result='win') as WIN_CASE
From TABLE
Group by NAME1
Having Count(Result='win')>=3;

但是,输出结果不正确,它只返回NAME1中显示的名称总数,请问我应该如何解决?

更新:感谢所有回复。 Kritner 和 jbarker 的结果工作正常。我只是忘记添加“where”子句。

【问题讨论】:

  • 如果其中一个回答回答了您的问题,您可以考虑通过选择其中一个回答来将此问题标记为已回答。
  • 是的,我已经选择了一个。谢谢。

标签: sql ms-access


【解决方案1】:

查询:

SELECT NAME1, COUNT(Result) AS WIN_CASE
FROM A
WHERE Result='win'
GROUP BY NAME1
HAVING COUNT(Result)>=3

【讨论】:

    【解决方案2】:

    试试这个

    select * 
    from (select NAME1, Result, count(*) as res from test group by Result, NAME1) as t 
    where t.res>=3 and t.Result ='win'
    

    【讨论】:

    • 请解释这段代码如何帮助 OP 和更多读者。您可以在help centerHow to Answer 中找到有关回答指南的更多信息
    【解决方案3】:

    你可以这样做:

    http://sqlfiddle.com/#!6/02c47/1

    select name1
    from test
    where result = 'win'
    group by name1
    having count(1) >= 3
    

    请注意,这并没有考虑到当名字 2 是 jone 时“Jone”获胜并且有损失(至少我是这样解释你的 shema 的。

    因此,如果 name1 是 jone,并且这是一场胜利,那么 jone 就赢了。但是如果 jone 是 name2 并且输了,那么 jone 赢了对吗?

    【讨论】:

    • 感谢您的回复。我只想从 NAME1 中选择名称,当且仅当它是 win 并且在 NAME1 中。我不考虑 NAME2 中的 jone,结果是输,因为它是 jone 的胜利。
    • 请问为什么是“count(1)”?为什么是“1”而不是其他?
    • 没有真正的原因,只是更快地为我写并产生相同的结果。 stackoverflow.com/questions/1221559/count-vs-count1
    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 2013-05-31
    相关资源
    最近更新 更多