试图根据样本表中不同的标准对计数进行简单的划分,并根据影片评级进行分组。我正在使用默认使用的MySQL示例SAKILA模式。需要左连接吗? WHERE条件的行为与INNER JOIN相似
你可以看到不同的罪名,我期待从这些前两个查询看到:
第一个查询:
SELECT f1.rating, count(f1.title)
FROM sakila.film f1
WHERE f1.title like '%BA%'
GROUP BY rating
ORDER BY rating ASC
第一次查询结果:
rating count(f1.title)
G 4
PG 5
PG-13 8
R 6
NC-17 6
第二个查询:
SELECT f1.rating, count(f1.title)
FROM sakila.film f1
WHERE f1.title like '%AM%'
GROUP BY rating
ORDER BY rating ASC
个第二个查询结果:
rating count(f1.title)
G 8
PG 6
PG-13 9
R 18
NC-17 7
什么我之后是对G等级有4/8的划分,为PG评级有5/6的划分,等等。
我希望以下查询能够完成这个计算,但是对于我来说,LEFT JOIN看起来像是一个INNER JOIN,因为这两个WHERE条件只导致1个包含'BA'以及'AM ”,这就是为什么结果是什么,它是:
疑难QUERY:
SELECT f1.rating, count(f1.title)/count(f2.title)
FROM sakila.film f1
LEFT JOIN sakila.film f2
ON f1.film_id = f2.film_id
WHERE f1.title like '%BA%'
AND f2.title like '%AM%'
GROUP BY rating
ORDER BY rating ASC
疑难查询结果:
rating count(f1.title)/count(f2.title)
PG-13 1.0000
我怎么能莫迪如果有问题的查询将计数从前两个查询中按计划划分并按分组进行分组?我是否需要使用UNION ALL重写查询,还是可以在这种情况下使用LEFT JOIN?
在此先感谢。
伟大工程算,感谢这么多的快速响应及解释 –
嗨西德尼,请开启一个新问题,而不是粘贴在这里作为评论。 –
这是,谢谢: http://stackoverflow.com/questions/42130476/calculating-acceptance-ratio-with-left-join-and-self-join-and-aggregate-function –