设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
有一需求,赐教各位大神
返回列表
发新帖
有一需求,赐教各位大神
[复制链接]
11
|
8
|
2021-1-27 05:06:14
|
显示全部楼层
|
阅读模式
数据库a
字段uid,b,c
其值如下:
uidbc
111
211
311
121
221
321
130
231
330
141
240
341
151
250
351
161
261
361
171
271
371
需求:
求各个UID的c最新连续=1的次数
最后结果是
uidbnum
174次
272次
374次
分 -->
回复
使用道具
举报
千问
|
2021-1-27 05:06:14
|
显示全部楼层
你的需求不是很明确啊?
求各个UID的c最新连续=1的次数没有太明白,你可以再描述清楚些
还有,你给出的结果对么?
回复
使用道具
举报
千问
|
2021-1-27 05:06:14
|
显示全部楼层
结果正确的
需求的意思就是:
求不同的uid,c=1连续出现的次数,要求出最新的次数,就如给的结果一样啊,那个结果就是最新的c=1连续次数
引用1楼getdate的回复:
你的需求不是很明确啊?
求各个UID的c最新连续=1的次数没有太明白,你可以再描述清楚些
还有,你给出的结果对么?
回复
使用道具
举报
千问
|
2021-1-27 05:06:14
|
显示全部楼层
就是uid=1的c=1的有2次连续出现的次数,1次是2次,1次是4次,4次那个是最新的
其他的uid类似
回复
使用道具
举报
千问
|
2021-1-27 05:06:14
|
显示全部楼层
引用3楼chinmo的回复:
就是uid=1的c=1的有2次连续出现的次数,1次是2次,1次是4次,4次那个是最新的
其他的uid类似
嗯,需求清楚了,这种SQL语句,有难度啊,要是用程序来处理,还行,要是用SQL语句来处理,没想出啥好办法.
回复
使用道具
举报
千问
|
2021-1-27 05:06:14
|
显示全部楼层
mysql>select*froma;
+------+------+------+
|uid|b|c|
+------+------+------+
|1|1|1|
|2|1|1|
|3|1|1|
|1|2|1|
|2|2|1|
|3|2|1|
|1|3|0|
|2|3|1|
|3|3|0|
|1|4|1|
|2|4|0|
|3|4|1|
|1|5|1|
|2|5|0|
|3|5|1|
|1|6|1|
|2|6|1|
|3|6|1|
|1|7|1|
|2|7|1|
|3|7|1|
+------+------+------+
21rowsinset(0.01sec)
mysql>selectuid,max(b),count(*)
->fromat1
->wherec=1
->andbandb>(selectmax(b)fromawhereuid=t1.uidandc=0)
->groupbyuid
->orderbyuid;
+------+--------+----------+
|uid|max(b)|count(*)|
+------+--------+----------+
|1|7|4|
|2|7|2|
|3|7|4|
+------+--------+----------+
3rowsinset(0.01sec)
mysql>
回复
使用道具
举报
千问
|
2021-1-27 05:06:14
|
显示全部楼层
引用5楼ACMAIN_CHM的回复:
mysql>select*froma;
+------+------+------+
|uid|b|c|
+------+------+------+
|1|1|1|
|2|1|1|
|3|1|1|
|1|2|1|
|2|2|1|
|3|2|1|
|1|3|0|
|2|3|1|
|3|3|0|
|1|4|1|
|2|4|0|
|3|4|1|
|1|5|1|
|2|5|0|
|3|5|1|
|1|6|1|
|2|6|1|
|3|6|1|
|1|7|1|
|2|7|1|
|3|7|1|
+------+------+------+
21rowsinset(0.01sec)
mysql>selectuid,max(b),count(*)
->fromat1
->wherec=1
->andbandb>(selectmax(b)fromawhereuid=t1.uidandc=0)
->groupbyuid
->orderbyuid;
+------+--------+----------+
|uid|max(b)|count(*)|
+------+--------+----------+
|1|7|4|
|2|7|2|
|3|7|4|
+------+--------+----------+
3rowsinset(0.01sec)
mysql>
试过这语句,好慢,才几万条数据就运行卡主了
回复
使用道具
举报
千问
|
2021-1-27 05:06:14
|
显示全部楼层
楼主你这个表信息不够吧
既然你要求的是“最新”,那么表里必须要有个字段标记记录产生的先后次序
而一般在数据库里,在查询时如果不加上orderby子句,查询结果是不保证会按数据的实际生成时间排序的
如此一来,楼上几位的查询都无法保证结果是正确的
回复
使用道具
举报
千问
|
2021-1-27 05:06:14
|
显示全部楼层
selectuid,max(b),sum(c)fromagroudbyuid;
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行