[英]Can we use SUM and Max Function with each other in SQL Statement?
我有以下要求:
CODE Marks A 50 A 50 B 60 B 60 C 20 C 20
現在,我想編寫一個查詢來顯示最佳射手的CODE和Marks。 在這個例子中它的B和120.如何在SQL中編寫它。
標准SQL
SELECT
Code, MAX(SumMarks)
FROM
(
SELECT
SUM(Marks) as SumMarks, Code
FROM
SomeTable
GROUP BY
Code
) foo
GROUP BY
Code
使用TOP或LIMIT(根據需要取消注釋)。 對於SQL Server,這是首選(使用WITH TIES),因為您可能有另一個具有相同最大值的分數SUM
SELECT -- TOP 1 -- WITH TIES if you have 2 scores the same
SUM(Marks) as SumMarks, Code
FROM
SomeTable
GROUP BY
Code
ORDER BY
SUM(Marks) DESC
-- LIMIT 1
如果不是你需要的東西,至少應該激勵你...
假設您只想要包含具有最高聚合分數的代碼的單行,則此查詢應該可以實現...(假設MS SQL)
SELECT TOP 1 Code, SCORE
FROM
(SELECT Code, SUM(Marks) as score FROM YourTable GROUP BY Code)
ORDER BY Score DESC
PostgreSQL或MySQL:
SELECT code
, marks
FROM (
SELECT CODE
, sum(Marks) as marks
FROM yourtable
GROUP BY CODE
ORDER BY 2 DESC
) mysums
LIMIT 1
SQL Server:
SELECT TOP 1
code
, marks
FROM (
SELECT CODE
, sum(Marks) as marks
FROM yourtable
GROUP BY CODE
ORDER BY 2 DESC
) mysums
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.