当前位置:Gxlcms > PHP教程 > sql查询重复值的次数

sql查询重复值的次数

时间:2021-07-01 10:21:17 帮助过:69人阅读

一个表 mark

id name pay
1 张三 1000
2 王磊 1200
3 张三 5853
4 王五 8574
5 高个 1259
6 高个 985

===================
怎么样来查询name字段的重复值,不知道怎么写sql,要的结果是就是 张三出现了几次,王磊出现了几次,高个出现了几次。


另外我不是很理解 group by 这个的用法和含义,有谁可以通俗点的说法告诉我下吗,谢谢。


回复讨论(解决方案)

select name, count(*) from mark grounp by name

group by 分组键
就是依据谁进行分组

group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。
SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。
某个员工信息表结构和数据如下:
id name dept salary edlevel hiredate
1 张三 开发部 2000 3 2009-10-11
2 李四 开发部 2500 3 2009-10-01
3 王五 设计部 2600 5 2010-10-02
4 王六 设计部 2300 4 2010-10-03
5 马七 设计部 2100 4 2010-10-06
6 赵八 销售部 3000 5 2010-10-05
7 钱九 销售部 3100 7 2010-10-07
8 孙十 销售部 3500 7 2010-10-06
例如,我想列出每个部门最高薪水的结果,sql语句如下:
SELECT DEPT, MAX(SALARY) AS MAXIMUM
FROM STAFF
GROUP BY DEPT
查询结果如下:
DEPT MAXIMUM
开发部 2500
设计部 2600
销售部 3500
解释一下这个结果:
1、满足“SELECT子句中的列名必须为分组列或列函数”,因为SELECT有GROUP BY DEPT中包含的列DEPT。
2、“列函数对于GROUP BY子句定义的每个组各返回一个结果”,根据部门分组,对每个部门返回一个结果,就是每个部门的最高薪水。
注意:计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY)。

2楼正解。不过单词写错了。

SELECT NAME, COUNT(*) FROM mark GROUP BY NAME;

记得以前有一个面试题,有这样出过。




group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。
SELECT子句中的列名必须为分组列或列函数。列函数对于GROUP BY子句定义的每个组各返回一个结果。
某个员工信息表结构和数据如下:
id name dept salary edlevel hiredate
1 张三 开发部 2000 3 2009-10-11
2 李四 开发部 2500 3 2009-10-01
3 王五 设计部 2600 5 2010-10-02
4 王六 设计部 2300 4 2010-10-03
5 马七 设计部 2100 4 2010-10-06
6 赵八 销售部 3000 5 2010-10-05
7 钱九 销售部 3100 7 2010-10-07
8 孙十 销售部 3500 7 2010-10-06
例如,我想列出每个部门最高薪水的结果,sql语句如下:
SELECT DEPT, MAX(SALARY) AS MAXIMUM
FROM STAFF
GROUP BY DEPT
查询结果如下:
DEPT MAXIMUM
开发部 2500
设计部 2600
销售部 3500
解释一下这个结果:
1、满足“SELECT子句中的列名必须为分组列或列函数”,因为SELECT有GROUP BY DEPT中包含的列DEPT。
2、“列函数对于GROUP BY子句定义的每个组各返回一个结果”,根据部门分组,对每个部门返回一个结果,就是每个部门的最高薪水。
注意:计算的是每个部门(由 GROUP BY 子句定义的组)而不是整个公司的 MAX(SALARY)。



也就是如果要查询一个字段的总和,或者最小数,通俗一点就是做数据查询的时候就需要用 group by来从新组合

我试过,比如要查询 select id,sum(dis) from mark 这样就会报错,
select id,max(dis) from mark 这个也会报错

select id,max(dis) as name from mark 这个也会报错

也就是如果用统计查询的字段必须要用 group by 来把统计查询出来的字段单独列一个字段出来,可以这样理解吗

select id,max(dis) from mark group by dis 就是查询max(dis)查询的出来的值用 group by来重新命名一个列出来

sum、max 都是数学函数,而你的 dis 列是字符型的,当然就要报错啦
group by 是分组的意思
有 group by 就按指定列的内容分组
没有 group by 就是全部记录算一组

人气教程排行