Sql 计算每个客户端的项目数并列出这些项目
我在我的任务中有关系:Sql 计算每个客户端的项目数并列出这些项目,sql,Sql,我在我的任务中有关系: File (fid, fname, description, status, cname, lname) 整个DB是一家律师事务所,fid代表文件ID、cname-客户名称、lname-律师名称。其余的目前都无关紧要 我想做的是: Find a client who has only 1 file and return the file and the client name. 我很容易找到哪位客户: select file.cname, count(fid), f
File (fid, fname, description, status, cname, lname)
整个DB是一家律师事务所,fid代表文件ID、cname-客户名称、lname-律师名称。其余的目前都无关紧要
我想做的是:
Find a client who has only 1 file and return the file and the client name.
我很容易找到哪位客户:
select file.cname, count(fid),
from file
group by cname
having count(fid)=1
然而,如果我将fid添加到这个查询中,我会得到一个糟糕的结果
我能做什么
谢谢。如果只有一个值,那么您可以使用
min()
或max()
获取该值:
select f.cname, min(f.fid) as fid
from file f
group by f.cname
having count(f.fid) = 1;
您不需要在
select
中指定count()
来在having
子句中使用它(在大多数数据库中……有例外,但我怀疑您使用的是Hive)。如果只有一个值,那么您可以使用min()
或max()
来获取它:
select f.cname, min(f.fid) as fid
from file f
group by f.cname
having count(f.fid) = 1;
在
having
子句中使用having
不需要在select
中指定count()
(在大多数数据库中……存在例外情况,但我怀疑您使用的是Hive)。如果要选择count=2、3的客户端,等,可以使用下面的查询,只需调整最后一行的编号:
SELECT file.cname, file.fname
FROM file
WHERE file.cname IN
(SELECT file.cname
FROM file
GROUP BY file.cname
HAVING COUNT(fid) = 2);
Alan如果要选择计数为2、3等的客户端,可以使用下面的查询,只需调整最后一行中的数字即可:
SELECT file.cname, file.fname
FROM file
WHERE file.cname IN
(SELECT file.cname
FROM file
GROUP BY file.cname
HAVING COUNT(fid) = 2);
因为你的姓氏恰好是@Gordon上课的学校的名字,所以得票最多。计数=2是另一回事!试试看!如果你想不出答案,请将你尝试过的问题作为一个新问题发布,我们将尽力帮助你。因为你的姓氏恰好是@Gordon授课的学校的名称,所以我们将投票表决。计数=2是另一回事!试试看!如果你想不出来,就把你试过的作为一个新问题发布,我们会尽力帮助你。@Alan。这将是一个不同的问题,你应该作为一个问题而不是在评论中提问。@Alan。这将是一个不同的问题,你应该作为一个问题而不是在评论中提问。