sql-SQL查询使用两个COUNT,结果变为两个COUNT的乘积,求高人解释!

问题描述

SQL查询使用两个COUNT,结果变为两个COUNT的乘积,求高人解释!

查询语句如下:
SELECT 球队名,号码,球员名,位置,国籍, COUNT(进球者ID) AS 进球数,COUNT(助攻者ID) AS 助攻数
FROM 球队表 A INNER JOIN 球员表 B ON A.球队缩写 = B.所属球队
LEFT OUTER JOIN 进球表 C ON B.球员ID = C.进球者ID
LEFT OUTER JOIN 助攻表 D ON B. 球员ID=D.助攻者ID
GROUP BY 球队名,号码,球员名,位置,国籍

结果显示的时候,例如桑切斯9球5助攻就会变成:进球45助攻45
到底哪里出了问题?

解决方案

不会吧,你再检查一下你的SQL语句和数据,先外连进球表看看数据是否为45.

解决方案二:

COUNT(进球者ID)取的是记录数,不是字段数。换一句话说,count(*)和count(某个字段)应该是相等的。
你可以将这个查询作为子查询,对它进球者ID和助攻者ID分别distinct后再count。

解决方案三:

select a.球队名,b.号码,b.球员名,b.位置,b.国籍, c.num as 进球数,d.num as 助攻数
from 球队表 A INNER JOIN 球员表 B ON A.球队缩写 = B.所属球队
LEFT OUTER JOIN (select 进球者ID,count(1) as num from 进球表 group by 进球者ID)C ON B.球员ID = C.进球者ID
LEFT OUTER JOIN (select 助攻者ID,count(1) as num from 助攻表 group by 助攻者ID)D ON B. 球员ID=D.助攻者ID

解决方案四:

select a.球队名,b.号码,b.球员名,b.位置,b.国籍, c.num as 进球数,d.num as 助攻数
from 球队表 A INNER JOIN 球员表 B ON A.球队缩写 = B.所属球队
LEFT OUTER JOIN (select 进球者ID,count(1) as num from 进球表 group by 进球者ID)C ON B.球员ID = C.进球者ID
LEFT OUTER JOIN (select 助攻者ID,count(1) as num from 助攻表 group by 助攻者ID)D ON B. 球员ID=D.助攻者ID

时间: 2024-08-21 19:08:11

sql-SQL查询使用两个COUNT,结果变为两个COUNT的乘积,求高人解释!的相关文章

sql查询-sql判断查询一个数是否在数据表两个字段的范围内要怎么写

问题描述 sql判断查询一个数是否在数据表两个字段的范围内要怎么写 大手求教,范围表 字段3个 name startnum endnum (end比start大 是bigint类型,name text型 数据:张三 101 200李四 201 300王五 301 400------省略 然后要查询一个值 如250是在那条数据的范围里这样要怎么写 解决方案 直接写就可以select name from tablename where startnum<=yournum and endnum>=y

sql server查询结果连续的问题。

问题描述 sql server查询结果连续的问题. 有两个字段value和type,type是int类型.固定1,2,3,4,5.查询数据时按type分组. 具体语句为: select avg(value) from [table] group by type 得到的结果是 value type 2 1 2 2 4 3 期望的结果是 value type 2 1 2 2 4 3 0 4 0 5 也就是没有的用0来填充. 解决方案 再定义一个表,叫t1,两个字段:value type,数据 0 1

只有两个字段用一个sql语句查询出某个学生的姓名、成绩以及在表中的排名_数据库其它

昨天去面试时遇到一个这样的问题: 有一张成绩表,只有两个字段,姓名和成绩.怎样用一个sql语句查询出某个学生的姓名,成绩以及在表中的排名? 一时间我也想不出具体实现,我就提了两种思路:一种是通过join关联一个查询出他排名的sql语句:一种是通过group by来实现. 回答得连自己都觉得有点心虚.请问大家如何实现呢? 假设:表名字为Course,两个字段分别为name和score 实现语句: SELECT 学生,成绩, (SELECT COUNT(*) FROM 表 WHERE a.成绩<=成

sql server-c# sqlserver 查询两个表中数据用datagridview 显示出来 老师出错 求大神指导

问题描述 c# sqlserver 查询两个表中数据用datagridview 显示出来 老师出错 求大神指导 string sql = " select a.2, a.3, b.2, b.3 from a, b, c where a.1= c.1 and b.1 = c.1 "; //查询语句太长 我就直接把意思表达出来 没有粘代码 DataSet ds1 = new DataSet(); DataTable dt = new DataTable (); DataSet ds2 =

关于sql server查询语句的写法。

问题描述 关于sql server查询语句的写法. 怎样写一个查询语句select distinct ID from TrainTime order by ID select Station from TrainTime where S_No='1'order by ID select Stationfrom TrainTime where D_Time='-' order by ID 怎样把这3个查询语句写为一句啊,让查询查来的结果为这3列数据. 因为我想建一个表,为3列,列名为:列车车次.起

sql语句查询问题。。。。。

问题描述 sql语句查询问题..... 一张学生表,字段学生姓名name,学科xk,成绩cj,查询平均成绩大于90,并且语文成绩大于95的学生姓名, 求解答~!!! 解决方案 命名查询的sql语句的问题一个SQL语句查询问题(查询最小值SQL语句中模糊查询的下划线的问题 解决方案二: select distinct 姓名name from (select 姓名name, 学科xk,成绩cj,avg(成绩cj) over (partition by 姓名name) as avg_cj from 学

sql语句查询,怎么去重复

问题描述 sql语句查询,怎么去重复 表 order 字段,id,student_id ,status,year(分别是,主键id,学生_id,状态,年份),现在表里面, 相同的student_id, 有两条数据,相同的数据,怎么根据 ,student_id,只查一条数据只查相对的一条数据, 解决方案 select * from TableName where FieldName in ( select FieldName?from TabelName group by FieldName? h

教你如何看懂SQL Server查询计划_MsSql

对于SQL Server的优化来说,优化查询可能是很常见的事情.由于数据库的优化,本身也是一个涉及面比较的广的话题,因此本文只谈优化查询时如何看懂SQL Server查询计划.毕竟我对SQL Server的认识有限,如有错误,也恳请您在发现后及时批评指正. 首先,打开[SQL Server Management Studio],输入一个查询语句看看SQL Server是如何显示查询计划的吧. 说明:本文所演示的数据库,是我为一个演示程序专用准备的数据库,可以在此网页中下载. select v.O

sql高级查询语句 麻烦大家了

问题描述 sql高级查询语句 麻烦大家了 --28)查询选修了课程名为"数据库"的学生的学号和姓名. select sname,sno from course,student where course.cno in( select cno from course where cname='sql') and course.cname=student.sno group by sname having count(cname)='sql' 显示错误 出不来 解决方案 sql高级查询语句