SQL中只对某两个字段进行分组,但我想得到其他字段而其他字段不写在GroupBy后,怎么做
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中只对某两个字段进行分组,但我想得到其他字段而其他字段不写在GroupBy后,怎么做相关的知识,希望对你有一定的参考价值。
如果其他字段的值都是一样的,那就用max或者min如果是数字,并且需要计算,就用聚合函数
如果是其他的,那最好是先把分组的字段先取出来做一张临时表再和原表关联取得其他的值。 参考技术A 使用嵌套select语句,外层not in内层,内层使用GroupBy。
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就是对一个字段分组,但是取多个字段数据
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;
亲试可行,推荐这种,可以看看,容易理解
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
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中只对某两个字段进行分组,但我想得到其他字段而其他字段不写在GroupBy后,怎么做的主要内容,如果未能解决你的问题,请参考以下文章