[英]WHERE clause with inner join
我有以下查詢來計算我的數據庫中的設備數量。 我嘗試添加WHERE子句以僅選擇設備並使用名稱“iphone”進行計數。
SELECT device, count( * ) AS count, sum( 100 ) / total AS percentage
FROM devices WHERE device='apple'
CROSS JOIN (
SELECT count( * ) AS total
FROM devices
)x
GROUP BY 1
我試圖構造不同的查詢,但它們都導致mysql錯誤。 WHERE子句的正確位置是什么?
WHERE
后談到FROM
之前GROUP BY
SELECT device, count( * ) AS count, sum( 100 ) / total AS percentage
FROM devices
INNER JOIN (
SELECT count( * ) AS total
FROM devices
)x
WHERE device='apple'
GROUP BY 1
順便說一下,您可以將此查詢重寫為:
SELECT 'apple' as device, sum(device = 'apple') AS count,
100 * sum(device = 'apple') / count(*) AS percentage
FROM devices ;
這將刪除額外的表掃描以計算總計和join
(這非常便宜,因為x
只有一行。
在分組之前和之后去哪里並加入:
SELECT device, count( * ) AS count, sum( 100 ) / total AS percentage
FROM devices
CROSS JOIN (
SELECT count( * ) AS total
FROM devices
)x
WHERE device='apple'
GROUP BY 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.