SELECT CASE WHEN good_time_id = 1 THEN '畅享' WHEN good_time_id = 2 THEN '尊享' WHEN good_time_id = 3 THEN '旗舰' ELSE '至尊' END goodName, statistic_time,SUM(date_part('hour', sign_expiration_time::timestamp - statistic_time::timestamp)) FROM ( SELECT DISTINCT statistic_time FROM vc_bean_residues_statistics WHERE statistic_time >='2023-06-01' ORDER BY statistic_time ) VBRS LEFT JOIN ( SELECT VUE.create_time,sign_expiration_time,good_time_id FROM vc_user_equipment VUE LEFT JOIN vc_cloud_good_time VCGT ON VUE.goods_time_id = VCGT."id" WHERE supplier_type = '2' AND VCGT.charge_type = '1' AND sign_expiration_time >='2023-06-01' ) VA ON date(VBRS.statistic_time) <= date(VA.sign_expiration_time) GROUP BY good_time_id,statistic_time ORDER BY statistic_time,good_time_id;
时间: 2023-10-15 09:05:40 浏览: 54
这是一段 SQL 查询语句,用于查询 vc_bean_residues_statistics 和 vc_user_equipment 两个表中的数据,并对结果进行分类汇总。
在这个查询语句中,"DISTINCT" 用于去重,保证查询结果中的 statistic_time 字段不会有重复的值。具体而言,在子查询中使用了 DISTINCT 关键字,查询出了 vc_bean_residues_statistics 表中 statistic_time 字段的所有不重复的值,然后将这些值与 vc_user_equipment 表中的数据进行 LEFT JOIN 操作,最后按照 good_time_id 和 statistic_time 进行分组,并计算出这些分组的统计结果。
总的来说,这段查询语句的主要作用是统计某个时间段内不同等级的商品使用时长的情况。
相关问题
mysql CASE WHEN s_score >= 60 THEN 1 ELSE 0
可以使用以下语句实现:
SELECT CASE WHEN s_score >= 60 THEN 1 ELSE 0 END AS pass FROM student_scores;
其中,s_score 是学生的分数,student_scores 是包含学生分数的表。这个语句会返回一个名为 pass 的列,其中包含每个学生是否通过考试的信息。如果学生的分数大于等于 60 分,则 pass 列中的值为 1,否则为 0。
case when end_time>start_time then end_time else start_time+1 end
这是一个SQL语句中的条件表达式,它的作用是用来判断时间段是否合法。具体来说,如果结束时间大于开始时间,则返回结束时间;否则,返回开始时间加上1。这个表达式可以在查询语句中使用,例如:
SELECT column1, column2, case when end_time>start_time then end_time else start_time+1 end as valid_time FROM table_name;
其中,column1和column2是需要查询的列,valid_time是根据条件表达式计算出来的列。