还有一张用户表(users),id也是主键,is_blacklist列中的1 代表该用户是骚扰用户,即他的电话不会打成功,会被系统拦截。
现要查询每天的正常用户给正常用户打电话,无法接通(可能是信号不好、电话欠费等原因导致)的概率,结果保留到小数点后两位,并按日期降序排列。比如上面示例就会得到如下结果
(注意: sqlite 1/2得到的不是0.5,得到的是0,只有1*1.0/2才会得到0.5,sqlite四舍五入的函数为round)
下列sqlite查询语句正确的是()
还有一张用户表(users),id也是主键,is_blacklist列中的1 代表该用户是骚扰用户,即他的电话不会打成功,会被系统拦截。
现要查询每天的正常用户给正常用户打电话,无法接通(可能是信号不好、电话欠费等原因导致)的概率,结果保留到小数点后两位,并按日期降序排列。比如上面示例就会得到如下结果
(注意: sqlite 1/2得到的不是0.5,得到的是0,只有1*1.0/2才会得到0.5,sqlite四舍五入的函数为round)
下列sqlite查询语句正确的是()
SELECT
t.date,
ROUND(
SUM(
CASE WHEN t.type = 'no_completed' THEN 1 ELSE 0 END
) * 1.0 / COUNT(t.type),
2
) AS p
FROM
telephones t
JOIN users u1 ON t.send_id = u1.id
AND u1.is_blacklist = 0
JOIN users u2 ON t.receive_id = u2.id
AND u2.is_blacklist = 0
GROUP BY
t.date
ORDER BY
t.date DESC;
SELECT
t.date,
ROUND(
SUM(
CASE t.type WHEN 'completed' THEN 0 ELSE 1 END
)* 1.0 / COUNT(t.type),
2
) AS p
FROM
telephones AS t,
users as u
WHERE
t.send_id = u.id
AND t.receive_id = u.id
AND u.is_blacklist = 0
GROUP BY
t.date
ORDER BY
t.date DESC;
SELECT
t.date,
ROUND(
SUM(
CASE WHEN t.type = 'no_completed' THEN 1 ELSE 0 END
) / COUNT(t.type),
2
) AS p
FROM
telephones t
JOIN users u1 ON t.send_id = u1.id
AND u1.is_blacklist = 0
JOIN users u2 ON t.receive_id = u2.id
AND u2.is_blacklist = 0
GROUP BY
t.date
ORDER BY
t.date DESC;
SELECT
t.date,
ROUND(
SUM(
CASE WHEN t.type = 'no_completed' THEN 1 ELSE 0 END
) * 1.0 / COUNT(t.type),
2
) AS p
FROM
telephones
JOIN users u1 ON t.send_id = u1.id
AND u1.is_blacklist = 0
JOIN users u2 ON t.receive_id = u2.id
AND u2.is_blacklist = 0
GROUP BY
t.date
ORDER BY
t.date DESC;
错误逻辑: