天天看点

mysqlgroupby

mysql group by 可以为多个值吗

在MySQL中,你可以获取表达式组合的连接值。你可以使用DISTINCT删去重复值。假若你希望多结果值进行排序,则应该使用ORDER

BY子句。若要按相反顺序排列,将DESC(递减)关键词添加到你要用ORDERBY子句进行排序的列名称中。

默认顺序为升序;可使用ASC将其明确指定。

SEPARATOR后面跟随应该被插入结果的值中间的字符串值。默认为逗号(‘,')。通过指定SEPARATOR'',你可以删除所有分隔符。

mysqlgroupby

mysql select * 与group by 一起用

不是,groupby是根据你的字段来作优先级来做显示

orderby是根据你的字段来做排序,groupby是根据你的字段来进行分组

如何对mysql的group

例子 aa表ab

12310

12312

123411

123414

首先 group 是用来分组的 不是过滤重复项的。重复项删除语句 DISTINCT用这个 。 select DISTINCT(a) from aa

结果就是a

123

1234

group by用来分组的

select a, sum(b) from aa group by a

sum意思是总和。结果就是

ab

12322

123425

语句的目的是以a为目标 需要知道 相同名字的物品在b列一共有多少数量总和

select a,count(b) from aa group by a

count 意思行数总和结果就是

ab

1232

12342

语句目的是 相同名字的物品 一共有几行易客crm之前的版本中有一个报表是按月统计销售情况,最近有个客户想按周统计销售情况。按月统计的sql语句比较好写,sql语句如下:

select date_format(ec_salesorder.duedate,’%y-%m’) as m, sum(ec_salesorder.total) as total, count(*) as so_count from ec_salesorder group by m order by m,也就是把duedate日期以月的形式显示,然后groupby,那么按周如何统计呢?

搜了一下mysql的manual,在这里找到一个解决方法,通过mysql的week函数来做,sql语句如下:select week(ec_salesorder.duedate) as m, sum(ec_salesorder.total) as total, count(*) as so_count from ec_salesorder group by m order by m,这个方法有个缺陷,不能显示年份,仅仅靠一个周数不方便查看统计信息。

继续研究mysql manual,在date_format函数介绍发现2个格式符和周有点关系:

%x year for the week where sunday is the first day of the week, numeric, four digits; used with %v

%x year for the week, where monday is the first day of the week, numeric, four digits; used with %v

把上面的sql语句中改成:

select date_format(ec_salesorder.duedate,’%x %v’) as m, sum(ec_salesorder.total) as total, count(*) as so_count from ec_salesorder group by m order by m

显示的结果如下:

m total so_count

2009 11 10000.00 3

2009 12 44000.00 5

如果周日为一周的第一天,那么sql语句应该为:

select date_format(ec_salesorder.duedate,’%x %v’) as m, sum(ec_salesorder.total) as total, count(*) as so_count from ec_salesorder group by m order by m

结果应该没错,不出意外,易客crm下个版本将增加按周统计销售情况的报表。

为什么 MySQL 中 GROUP

group就是对表中的记录按照相应的字段或字段表达式进行分组,从而获取每个组中的唯一一条汇总信息。group通常要配合聚合函数如min,max,sum,count等一起使用才有意义,有时我们还需要进一步使用having关键字对分组汇总信息做进一步筛选。

请注意使用group分组时,输出字段列表只能包含参与分组的字段以及汇总信息,未参与分组的字段不得出现于输出列表中,否则会导致报错。

group应用举例:

订单表(订单id,商品,数量,单价,日期)

现在需要查出每日的订单笔数和每日销售总额

运行下列分组汇总SQL语句即可轻松获取:

select 日期,count(*) as 订单笔数,

sum(数量*单价) as 当日销售总额

select * from 学生表 where 姓名 in 
(select 姓名 from 学生表 group by 姓名 
having count(*)>1) order by 姓名;public static boolean isnumeric(string str){ 
for (int i = str.length();--i>=0;){ 
if (!character.isdigit(str.charat(i))){ 
return false; 
return true;