这里的不同条件和总数计算是一个样表我有SQL查询来找到在同一查询
Logs
user_id, session_id, search_query, action
1, 100, dog, A
1, 100, dog, B
2, 101, cat, A
3, 102, ball, A
3, 102, ball, B
3, 102, kite, A
4, 103, ball, A
5, 104, cat, A
其中 错过=为同一USER_ID和相同的会话ID,如果动作A其次是行动B,它被称为小姐。
注意:只有在行动A发生后才可能发生行动B.
我能够找到所有用户和会话中每个唯一search_query的未命中数。
SELECT l1.search_query, count(l1.*) as misses
FROM logs l1
WHERE NOT EXISTS
(SELECT NULL FROM logs l2
WHERE l1.user_id = l2.user_id
AND l1.session_id = l2.session_id
AND l1.session_id != ''
AND l2.action = 'B'
AND l1.action = 'A')
AND l1.action='A'
AND l1.search_query != ''
GROUP BY v1.search_query
order by misses desc;
我想为每个唯一的search_query找到miss_percentage =(失误次数/总行数)* 100的值。我无法弄清楚如何在一个查询中找到一个条件计数并且没有这个条件的计数。任何帮助都会很棒。
expected output:
cat 100
kite 100
ball 50
对不起,忘了提及此之前。我在亚马逊红移表中运行此查询。我收到以下错误。 '执行SQL命令时发生错误: SELECT l1.search_query,count(NOT EXISTS时的情况) (SELECT 1 FROM logs l2 WHERE l1.user_id = 1 ... 错误:此类型的相关子查询模式不是支持由于内部错误[SQL状态= XX000]' – srini