簡體   English   中英

我們可以在SQL語句中相互使用SUM和Max函數嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM