我在两个表上使用了INNER JOIN:
Transactions
- transaction_id (PK)
-ticket_id (FK) reference to ticketsforsale
Ticketsforsale :
- ticket_id (PK)
- type
- price
(每个表中有更多列,但对这个问题没有用)
我尝试过的查询如下:
SELECT ticketsforsale.type , SUM(ticketsforsale.price) AS TotalProfit
FROM ticketsforsale INNER JOIN transactions
ON ticketsforsale.ticket_id = transactions.ticket_id
GROUP BY ticketsforsale.type
The result is :
Sports | 300
Cruise | 600
Theater| 100
我尝试在查询中使用此行
WHERE TotalProfit = SELECT(MAX(TotalProfit)
但是我找不到这行的正确位置。
我要查询执行的操作是仅显示包含“ TotalProfit”最大值的ROW。我只是在此查询上缺少正确的MAX函数用法,谢谢!
答案 0 :(得分:2)
您可以使用CTE
并根据TotalProfit
值仅选择一行。
with cte as (
SELECT ticketsforsale.type , SUM(ticketsforsale.price) AS TotalProfit
FROM ticketsforsale INNER JOIN transactions
ON ticketsforsale.ticket_id = transactions.ticket_id
GROUP BY ticketsforsale.type
)
select *
from cte
order by TotalProfit desc
limit 1
如果您想使用max()
,则可以执行以下操作:
with cte as (
SELECT ticketsforsale.type , SUM(ticketsforsale.price) AS TotalProfit
FROM ticketsforsale INNER JOIN transactions
ON ticketsforsale.ticket_id = transactions.ticket_id
GROUP BY ticketsforsale.type
)
select *
from cte
where TotalProfit = (select max(TotalProfit) from cte)
答案 1 :(得分:2)
使用<div onclick=start()>start</div>
<div onclick=stop()>stop</div>
并将结果集限制为一行:
let refreshInterval = null;
start() {
var i = 0;
refreshInterval = setInterval(function() {
console.log(i);
i++;
}, 1000);
}
stop() {
???????
}
请注意,我还引入了表别名,因此查询更易于编写和阅读。
根据此查询,您似乎不需要ORDER BY
:
SELECT tfs.type , SUM(tfs.price) AS TotalProfit
FROM ticketsforsale tfs INNER JOIN
transactions t
ON tfs.ticket_id = t.ticket_id
GROUP BY tfs.type
ORDER BY TotalProfit DESC
FETCH FIRST 1 ROW ONLY;