[英]Finding rows relation in a table
我有一台PC,列name
和price
。
我想在表中顯示每台PC的名稱和其他PC的總數(價格較高),我該怎么做?
您可以自聯接表並使用聚合:
SELECT p.name, p.price, COALESCE(COUNT(p1.name), 0) cnt
FROM pc p
LEFT JOIN pc p1 ON p1.price > p.price
GROUP BY p.name, p.price
在MySQL 8.0中,您還使用窗口函數,這些函數通常比聚合或相關子查詢更有效:
SELECT
p.name,
p.price,
RANK() OVER(ORDER BY price DESC) - 1 rn
FROM pc p
使用相關的子查詢來選擇價格較高的所有PC並將其計入匯總中。
SELECT pc1.name,
(SELECT count(*)
FROM pc pc2
WHERE pc2.price > pc1.price)
FROM pc pc1;
select
pc1.name,
(select count(*) from PC pc2 where pc2.price > pc1.price) as count_bigger_price
from PC pc1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.