首页 > 数据库 >sql包含逗号的字段 统计数量

sql包含逗号的字段 统计数量

时间:2023-01-18 11:34:14浏览次数:38  
标签:INSERT 包含 helper 逗号 rf VALUES split sql id

说明:统计psyt类型的rw数量,psyt存储的格式(11,22,33,44)

原理:
    substring_index(a.usualusecurrentstatusid, ',', n)   ----截取第n个逗号前的数字
    substring_index(a.usualusecurrentstatusid, ',', -1)   ----截取最后一个逗号后边的值
    substring_index(substring_index(a.usualusecurrentstatusid, ',', b.id + 1), ',', - 1)
根据 后边的legth减法计算有几个数值,根据此数值循环拿出(11,22,33,44)最里层的截取是获得前面的数据,外层的截取是获得最后的数据
例:有四个值,因为on 条件是<4;
第一步 substring_index(a.usualusecurrentstatusid, ',', 1), ',', - 1) ------》11---》11
第二步substring_index(a.usualusecurrentstatusid, ',', 2), ',', - 1) ------》11,22---》22
第三步substring_index(a.usualusecurrentstatusid, ',', 3), ',', - 1) ------》11,22,33---》33
第四步substring_index(a.usualusecurrentstatusid, ',', 4), ',', - 1) ------》11,22,33,44---》44
最后根据group by 统计数量

select count(aa.bh) gs,sd.id rfxzId,sd.item_text rfxz,sum(aa.ryarea) z_ryarea,sum(aa.rfarea) z_rfarea  from (
SELECT a.bh,a.ryarea,a.rfarea
, substring_index(
substring_index(a.usualusecurrentstatusid, ',', b.id + 1), ',', - 1) AS usualusecurrentstatusid
FROM rf_projectinfo a
join sys_dict_item sdi on sdi.id=a.streetid and a.del=0

INNER JOIN rf_split_helper b
ON b.id < (length(a.usualusecurrentstatusid) - length(REPLACE(a.usualusecurrentstatusid, ',', ''))
+ 1) where a.del=0) aa left join sys_dict_item sd on sd.id=aa.usualusecurrentstatusid

group by aa.usualusecurrentstatusid ORDER BY gs desc





需要增加辅助表:


create table rf_split_helper
        (
        id int(30) null
        );

        INSERT INTO rf_split_helper (id) VALUES (0);
        INSERT INTO rf_split_helper (id) VALUES (1);
        INSERT INTO rf_split_helper (id) VALUES (2);
        INSERT INTO rf_split_helper (id) VALUES (3);
        INSERT INTO rf_split_helper (id) VALUES (4);
        INSERT INTO rf_split_helper (id) VALUES (5);
        INSERT INTO rf_split_helper (id) VALUES (6);
        INSERT INTO rf_split_helper (id) VALUES (7);
        INSERT INTO rf_split_helper (id) VALUES (8);
        INSERT INTO rf_split_helper (id) VALUES (9);
        INSERT INTO rf_split_helper (id) VALUES (10);
        INSERT INTO rf_split_helper (id) VALUES (11);
        INSERT INTO rf_split_helper (id) VALUES (12);
        INSERT INTO rf_split_helper (id) VALUES (13);
        INSERT INTO rf_split_helper (id) VALUES (14);
        INSERT INTO rf_split_helper (id) VALUES (15);
        INSERT INTO rf_split_helper (id) VALUES (16);
        INSERT INTO rf_split_helper (id) VALUES (17);
        INSERT INTO rf_split_helper (id) VALUES (18);
        INSERT INTO rf_split_helper (id) VALUES (19);
        INSERT INTO rf_split_helper (id) VALUES (20);
        INSERT INTO rf_split_helper (id) VALUES (21);
        INSERT INTO rf_split_helper (id) VALUES (22);
        INSERT INTO rf_split_helper (id) VALUES (23);
        INSERT INTO rf_split_helper (id) VALUES (24);
        INSERT INTO rf_split_helper (id) VALUES (25);
        INSERT INTO rf_split_helper (id) VALUES (26);
        INSERT INTO rf_split_helper (id) VALUES (27);
        INSERT INTO rf_split_helper (id) VALUES (28);
        INSERT INTO rf_split_helper (id) VALUES (29);
        INSERT INTO rf_split_helper (id) VALUES (30);

标签:INSERT,包含,helper,逗号,rf,VALUES,split,sql,id
From: https://www.cnblogs.com/z-double/p/17047246.html

相关文章

  • SQLServer查看当前数据库正在运行的Session
    SELECT des.session_id, des.status, des.login_name, des.[HOST_NAME], der.blocking_session_id, DB_NAME(der.database_id)ASdatabase_name, der.comma......
  • Docker下安装MySQL8与开启root远程访问
    1.dockersearchmysql#查询mysql版本2.dockerpullmysql:8.0.15#拉取mysql3.创建mysql容器dockerstopmysql_8dockerrmmysql_8dockerrun-d-eTZ=“Asia/Shan......
  • mysql5.7彻底解决sql_mode=only_full_group_by
    打开配置文件windows在安装目录下的my.ini文件Linux在/etc/my.cnf分别在[mysqld]下面添加这段:sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FO......
  • mysql查询怎么区分大小写
    mysql中查询默认是区分大小写的,但是在mysql中默认不区分大小写。解决办法:mysql可以在SQL语句中加入binary来区分大小写。BINARY不是函数,是类型转换运算符,它用来强制它后......
  • 这项评测,华为云GaussDB(for MySQL)顺利通过
    摘要:近日,中国信息通信研究院(简称“中国信通院”)公布了第十五批“可信数据库”评测结果。华为云GaussDB(forMySQL)凭借过硬的技术实力顺利通过“HTAP数据库基础能力评测”......
  • 这项评测,华为云GaussDB(for MySQL)顺利通过
    摘要:近日,中国信息通信研究院(简称“中国信通院”)公布了第十五批“可信数据库”评测结果。华为云GaussDB(forMySQL)凭借过硬的技术实力顺利通过“HTAP数据库基础能力评测”。......
  • MySQL必知必会第十二章-汇总数据
    汇总数据聚集函数聚集函数(aggregatefunction)运行在行组上,计算和返回单个值的函数。函数说明AVG()返回某列的平均值COUNT()返回某列的行数MAX()返......
  • MySQL事务的隔离级别
     令人惊讶的是,大部分数据库系统都没有提供真正的隔离性,最初或许是因为系统实现者并没有真正理解这些问题。如今这些问题已经弄清楚了,但是数据库实现者在正确性和性能之间......
  • mysql记录锁(record lock),间隙锁(gap lock),Nextkey锁(Nextkey lock)
    1.什么是幻读?幻读是在可重复读的事务隔离级别下会出现的一种问题,简单来说,可重复读保证了当前事务不会读取到其他事务已提交的UPDATE操作。但同时,也会导致当前事务无法感......
  • mysql update 锁行还是锁表
    结论Update时,where中的过滤条件列,如果用索引,锁行,无法用索引,锁表。按照索引规则,如果能使用索引,锁行,不能使用索引,锁表。Insert,delete时,锁行。InnoDB行锁是通过给索引上的索......