sql对一个字段进行分组 怎么显示多个字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql对一个字段进行分组 怎么显示多个字段相关的知识,希望对你有一定的参考价值。

select IteID,count(IteID) WrongCount from Exam_ItemListWrong_View
where IsKeyTrue=2 and UserId in
(select UserId from Sys_UserInfo where classid in
(select ParameterValue from Sys_UserParameter where U_ID=60))
group by IteID order by WrongCount desc
这样是可以的 但只能显示一个字段 我还需要显示同一张表里其他的字段
怎么才能做到呢?

select X.*,WrongCount
from Exam_ItemListWrong_View X,(select IteID,count(IteID) WrongCount from Exam_ItemListWrong_View
where IsKeyTrue=2 and UserId in
(select UserId from Sys_UserInfo where classid in
(select ParameterValue from Sys_UserParameter where U_ID=60))
group by IteID) AS Y
WHERE X.ITEID=Y.ITEID
order by WrongCount desc
这样也不行 会显示重复数据

    SQL 分组关键字 Group by 

    在汇总,求和,等函数中可以出现多字段

    假如定义一个表 A,表中有字段 a nvarchar 类型,b 字段int 类型

    select a,sum(b) as b from A

    group by a

    上列SQL就是对一个字段分组,但是取多个字段数据

参考技术A SELECT "最高分",student.*
FROM student ,(SELECT MAX(score) AS score,`subject` FROM student GROUP BY `subject`)b
WHERE student.`score` = b.score
AND student.`subject` = b.subject
UNION
SELECT "最低分",student.*
FROM student ,(SELECT MIN(score) AS score,`subject` FROM student GROUP BY `subject`)b
WHERE student.`score` = b.score
AND student.`subject` = b.subject;

亲试可行,推荐这种,可以看看,容易理解

参考技术B SELECT COL1,COL2,COL3,TEST
FROM TABLENAME X,(SELECT COL1,COUNT(COL1) AS TEST GROUP BY COL1)AS Y WHERE X.COL1=Y.COL1 只有上面这种方法。GROUP BY 必须按SELECT后不是聚合函数的所有字段分组。追问

这样也不行啊 会报错
(除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。)

追答

select X.*,WrongCount
from Exam_ItemListWrong_View X,(select IteID,count(IteID) WrongCount from Exam_ItemListWrong_View
where IsKeyTrue=2 and UserId in
(select UserId from Sys_UserInfo where classid in
(select ParameterValue from Sys_UserParameter where U_ID=60))
group by IteID) AS Y
WHERE X.ITEID=Y.ITEID
order by WrongCount desc

追问

这样还是不行  会有重复数据 

追答

我看你图了、你不是要全部字段吗?而且没有重复啊。整个字段一模一样才叫重复。
否则你按那几个属性值相同的字段分组、这样结果就不对了。
你把select 后面加distinct去重复
select distinct X.*,WrongCount

本回答被提问者和网友采纳
参考技术C 首先你题目不是很明确我理解的是这样:
SELECT COL1,COUNT(COL2),COUNT(3) FROM TABLENAME GROUP BY COL1追问

不是这样的 这样可以吗
SELECT COL1,COL2,COL3, COUNT(COL1) FROM TABLENAME GROUP BY COL1

追答

这样肯定不可以,你前面出现了后面group by也要出现

参考技术D 你的要求是不会有答案的,要不你需要显示的字段也参加分组

以上是关于sql对一个字段进行分组 怎么显示多个字段的主要内容,如果未能解决你的问题,请参考以下文章

SQL中查询多个字段时,GROUP BY 要怎么使用?

SQL中查询多个字段时,GROUP BY 要怎么使用?

SQL多个字段如何去重

es根据一个字段分组聚合另一个字段进行排序

SQL GROUP BY对多个字段进行分组

【求助】SQL 同一字段不同内容进行分组显示的