CREATE TABLE tmp_x_sijirbsj as SELECT * FROM `driver_assess_info` WHERE ` 日期` BETWEEN @yue AND @riqi; SELECT @riqi as '日期' ,` 注册运营城市` ,count(distinct case when ` 在线时长(小时)`>0 and ` 日期`<=cast(@riqi as date) then ` 司机ID` else null end) as '累计在线司机数' ,count(distinct case when ` 在线时长(小时)`>0 and ` 日期`>=cast(@yue as date) and ` 日期`<=cast(@riqi as date) then ` 司机ID` else null end) as '本月在线司机数' ,count(distinct case when ` 应答量`>0 and ` 日期`<=cast(@riqi as date) then ` 司机ID` else null end) as '累计应答司机数' ,count(distinct case when ` 应答量`>0 and ` 日期`>=cast(@yue as date) and ` 日期`<=cast(@riqi as date) then ` 司机ID` else null end) as '本月应答司机数' ,count(distinct case when ` 完单量`>0 and ` 日期`<=cast(@riqi as date) then ` 司机ID` else null end) as '累计完单司机数' ,count(distinct case when ` 完单量`>0 and ` 日期`>=cast(@yue as date) and ` 日期`<=cast(@riqi as date) then ` 司机ID` else null end) as '本月完单司机数' FROM `tmp_x_sijirbsj` group by ` 注册运营城市`
时间: 2023-08-16 19:12:02 浏览: 43
你想创建一个名为 tmp_x_sijirbsj 的表,并从 driver_assess_info 表中选择满足日期范围条件的数据。然后,你想计算每个城市在给定日期之前和本月的累计在线司机数、累计应答司机数和累计完单司机数,以及本月的在线司机数、应答司机数和完单司机数。最后,你希望按注册运营城市进行分组。请问有什么其他问题吗?
相关问题
SELECT id, name FROM pms_assess WHERE parent_id = ( SELECT catalog_id FROM pms_product WHERE id = 1663780757367164929 );如果没有结果则返回parent_id = 0的结果,使用CASE WHEN THEN实现
好的,你想要使用 CASE WHEN THEN 实现查询的需求,根据子查询的结果进行判断,如果有结果返回符合条件的结果,如果没有结果则返回 parent_id = 0 的结果。可以使用以下 SQL 语句实现:
```
SELECT id, name
FROM pms_assess
WHERE parent_id = (
SELECT
CASE
WHEN EXISTS (SELECT id FROM pms_assess WHERE parent_id = (SELECT catalog_id FROM pms_product WHERE id = 1663780757367164929))
THEN (SELECT catalog_id FROM pms_product WHERE id = 1663780757367164929)
ELSE 0
END
)
```
这个 SQL 语句会先执行子查询,查询符合条件的 catalog_id,如果存在则返回 catalog_id,否则返回 0。然后在外层查询中,根据返回的结果作为 parent_id 的条件进行查询,如果存在符合条件的结果则返回,否则返回 parent_id = 0 的结果。
希望这个回答能够解决你的问题。
Unknown column 'is_assess' in 'field list'
这个错误通常是由于查询的表中不存在名为'is_assess'的列而导致的。可能是因为你的查询语句中引用了一个不存在的列名或者是你的表结构发生了变化,但是你的查询语句没有相应地进行更新。你可以检查一下你的查询语句和表结构是否匹配,或者是尝试重新运行数据库迁移以更新表结构。如果问题仍然存在,你可以尝试重启数据库服务或者是联系数据库管理员进行进一步的排查。