sql多条件分组查询,求sql语句。
有表tabelnamedate1a2012-01-302a2012-01-173b2012-01-174c2012-01-205d2012-01-296a2012-01-...
有表tabel
name date
1 a 2012-01-30
2 a 2012-01-17
3 b 2012-01-17
4 c 2012-01-20
5 d 2012-01-29
6 a 2012-01-01
7 c 2012-01-14
查询得到以下分组排序,按name分组,并且组与组之间按date排序。
name date
1 a 2012-01-30
2 a 2012-01-17
3 a 2012-01-01
4 d 2012-01-29
5 c 2012-01-20
6 c 2012-01-14
7 b 2012-01-17 展开
name date
1 a 2012-01-30
2 a 2012-01-17
3 b 2012-01-17
4 c 2012-01-20
5 d 2012-01-29
6 a 2012-01-01
7 c 2012-01-14
查询得到以下分组排序,按name分组,并且组与组之间按date排序。
name date
1 a 2012-01-30
2 a 2012-01-17
3 a 2012-01-01
4 d 2012-01-29
5 c 2012-01-20
6 c 2012-01-14
7 b 2012-01-17 展开
6个回答
2016-01-03 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
sql多条件分组查询举例:
比如有两张表:
表一:
姓名 分数
——————
李一 2
李二 1
李三 1
张一 3
张二 2
张三 2
……
表二:
姓晌弯
——
李
张
王
要查询表二中的姓的数据对表一进碧滚行分组,然后将分数统计出悔谨余来。
sql语句写法如下:
SELECT
b. NAME,
sum(a.score) AS 分数
FROM
tb1 a
LEFT JOIN tb2 b ON SUBSTR(a.name FROM 1 FOR 1)= b.`name`
GROUP BY
b. NAME;
这个是Mysql的写法 Oracle把SubStr函数改一下就可以了。
比如有两张表:
表一:
姓名 分数
——————
李一 2
李二 1
李三 1
张一 3
张二 2
张三 2
……
表二:
姓晌弯
——
李
张
王
要查询表二中的姓的数据对表一进碧滚行分组,然后将分数统计出悔谨余来。
sql语句写法如下:
SELECT
b. NAME,
sum(a.score) AS 分数
FROM
tb1 a
LEFT JOIN tb2 b ON SUBSTR(a.name FROM 1 FOR 1)= b.`name`
GROUP BY
b. NAME;
这个是Mysql的写法 Oracle把SubStr函数改一下就可以了。
展开全部
select t.*
from (select a.name, a.date
from testU a
group by a.name, a.num
order by a.name, a.num desc) t
left join
(select name, max(date) date from testU group by name
) b on t.name = b.name
order by b.date desc, t.datedesc;
弄了半天才出来,和洞试竖升了可以,余棚老望采纳!
from (select a.name, a.date
from testU a
group by a.name, a.num
order by a.name, a.num desc) t
left join
(select name, max(date) date from testU group by name
) b on t.name = b.name
order by b.date desc, t.datedesc;
弄了半天才出来,和洞试竖升了可以,余棚老望采纳!
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
分组是用来聚集哗旅汇总的,如求平均、求总和、求最大等
你这个不需要分组,直接排序就可以了运橡
select name, date from table order by name asc, date desc
如果每组要按date的降旁芦旁序排列,也挺简单
with t1 as (select name, max(date) md from table group by name,
t2 as (select table.name name, table.date date, t1.md from table join t1 on table.name=t1.name
order by t1.md)
select name,date from t2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主,标准型游的圆携SQL如下:
select name,date from table group by name,date;
请采纳!卜腔销
select name,date from table group by name,date;
请采纳!卜腔销
更多追问追答
追问
group by 之后就不是原来的数据量了 只有a b c d4列了。我并不是要合并,而是分组。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select name , date from tabel order by name , date
更多追问追答
追问
试过,不好用。这种查询的结果是优先name 虽然name在一起,但是顺序也是按name来排的
追答
你的意思是name不用排序是吧 那就会有点麻烦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询