試圖根據樣本表中不同的標準對計數進行簡單的劃分,並根據影片評級進行分組。我正在使用默認使用的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 –