sql 記錄如下:
id value
1 1234
2 1234
3 1235
4 234
5 235
6 235
7 237
8 1234
9 1234
10 1234
................
現在想統計value小于3位的在記錄里面有的次數,但連續的只能算一次,例如記錄ID4-7都是3位數,統計的時候,只算一次,如此類推,求sql的寫法,謝謝。
uj5u.com熱心網友回復:
連接查詢,如果下一條記錄的位數不是3,則不算;只取出下一條記錄不是3,且本條記錄是3的條數就行了。實作代碼如下
create table seq(id int ,value int);
insert into seq
values(1,1234),
(2,123),
(3,1234),
(4,123),
(5,123),
(6,1234),
(7,123),
(8,123),
(9,1234),
(10,123)
/*以上為測驗資料,以下為實作代碼*/
select count(1) from seq as s
left join (select id,length(value) as v from seq) as b on s.id=b.id-1
where length(s.value)<>ifnull(b.v,0) and length(s.value)=3
uj5u.com熱心網友回復:
SELECT count(mid) from (
SELECT min(id) as mid FROM test where LENGTH(VALUE)<4
GROUP BY VALUE
HAVING count(VALUE)>1) a
可行
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/13392.html
標籤:MySQL
