【问题标题】:SQL Counting Records with Count and HavingSQL 用 Count 和 Have 统计记录
【发布时间】:2011-02-06 10:44:00
【问题描述】:

我认为对记录计数的简单查询有问题:

SELECT req_ownerid, count(req_status_lender) AS total6 
FROM bor_requests
WHERE (req_status_lender = 0 AND req_status_borrower = 0) OR 
      (req_status_lender = 1 AND req_status_borrower = 1)
GROUP BY req_ownerid 
HAVING req_ownerid = 70

我认为这会计算 (req_status_lender = 0 AND req_status_borrower = 0) 和 (req_status_lender = 1 AND req_status_borrower = 1) 的所有记录,然后给我总数,但它只给我任何一个 (req_status_lender = 0) 的总数AND req_status_borrower = 0) 或 (req_status_lender = 1 AND req_status_borrower = 1)。

任何想法我做错了什么?

【问题讨论】:

  • 如果您发布代码、XML 或数据示例,在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码示例”按钮 ({})很好地格式化和语法高亮它!

标签: sql count having


【解决方案1】:

您应该只使用 HAVING 子句来限制在上面的查询中聚合的内容 - 例如如果你想选择所有那些 SUM(....)COUNT(...) 大于 5 的行,那么你会使用 HAVING SUM(...) > 5

你在这里做的是一个标准的WHERE 子句 - 添加它!

SELECT req_ownerid, count(req_status_lender) AS total6 
FROM bor_requests
WHERE req_ownerid = 70
      AND ((req_status_lender = 0 AND req_status_borrower = 0) OR 
           (req_status_lender = 1 AND req_status_borrower = 1))
GROUP BY req_ownerid 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-24
    • 2011-03-18
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 2016-04-13
    • 2010-09-19
    • 1970-01-01
    相关资源
    最近更新 更多