SQL计数具有计数和拥有的记录 [英] SQL Counting Records with Count and Having

查看:186
本文介绍了SQL计数具有计数和拥有的记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到问题,我认为是一个简单的查询计数记录:

I'm having problems with what I thought was a simple query to count records:

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)的总数。

I thought this would count all the records where (req_status_lender = 0 AND req_status_borrower = 0) and (req_status_lender = 1 AND req_status_borrower = 1) and then give me the total but it only gives me the total for either (req_status_lender = 0 AND req_status_borrower = 0) or (req_status_lender = 1 AND req_status_borrower = 1).

任何想法我做错了什么?

Any ideas what I'm doing wrong?

推荐答案

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

You should use the HAVING clause only to limit on something that's been aggregated in your query above - e.g. if you want to select all those rows where a SUM(....) or COUNT(...) is larger than say 5, then you'd use HAVING SUM(...) > 5

你在这里做的是一个标准的 WHERE

What you're doing here is a standard WHERE clause - add it there!

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 

这篇关于SQL计数具有计数和拥有的记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆