Summer_1218
2019-10-16 14:12
采纳率: 66.7%
浏览 1.0k

SQLite数据库分组查询合并数据问题

请问这样的几条SQL怎么合并成一条语句并且将结果返回到一个表中?
分组的条件是固定的图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • lsm123 2019-10-16 14:33
    已采纳

    可以 外面再套一个select 把 你这里的每一个查询 当成一个表,连接在一起就可以了
    例如 select * from ( (第一条分组语句) a inner join (第二个语句)b on a.字段=b.字段))
    每个查询语句里得增加一个 用于连接的字段,这个字段应该是saveDateTime. 如果查询结果不是每个日期都有,可能要用左侧连接或全连接

    还有一种更好的解决方案
    这几条语句都是从同一个表查询的,所以可以用case when语句 将满足条件的设置为1 不满足的设置为0 ,然后外面套一个sum 一次查询就可以得到结果了。效率更好

    点赞 打赏 评论
  • 旋叶 2019-10-16 14:41
    SELECT 
        STRFTIME('%d',A1.SaveDatetime),
        SUM(CASE WHEN b1.Age<18 THEN 1 ELSE 0 END) AS COUNT_AGE_18,
        SUM(CASE WHEN b1.Age>=18 AND b1.Age<20 THEN 1 ELSE 0 END) AS COUNT_AGE18_20,
        SUM(CASE WHEN b1.Age>=21 AND b1.Age<30 THEN 1 ELSE 0 END) AS COUNT_AGE21_30,
        SUM(CASE WHEN b1.Age>=31 AND b1.Age<40 THEN 1 ELSE 0 END) AS COUNT_AGE31_40,
        SUM(CASE WHEN b1.Age>=41 AND b1.Age<50 THEN 1 ELSE 0 END) AS COUNT_AGE41_50,
        SUM(CASE WHEN b1.Age>=51 AND b1.Age<60 THEN 1 ELSE 0 END) AS COUNT_AGE51_60,
        SUM(CASE WHEN b1.Age>60 THEN 1 ELSE 0 END) AS COUNT_AGE60_
    FROM Form_ApplicantsTable AS a1
    LEFT JOIN Form_ApplicantDemographicTable as b1 on a1.Guid=b1.ApplicantGuid
    WHERE date(a1.SaveDatetime)>'2019-10-10'
    group by STRFTIME('%d',A1.SaveDatetime)
    
    点赞 打赏 评论

相关推荐 更多相似问题