2014-09-22 26 views
1

我需要顯示在以下網頁每個汽車品牌的總銷量在2014年正確的SQL SELECT功能:如何獲得以下任務

http://test.com/example/2014/8

htaccess文件:

RewriteRule ^example/([^/]+)/([^/]+)$ test?year=$1&monthnumber=$2 [L,QSA] 

實施例的數據(carbrand,年份,monthnumber,銷售):

carbrand year month sales 
---------------------------- 
Mercedes 2014  8 2800 
BMW  2014  8 3000 
Audi  2014  8 2700 
Mercedes 2014  7 2600 
BMW  2014  7 2900 
Audi  2014  7 2400 

HTML/PHP:

<?php 
    $year= $_GET['year']; 
    $monthnumber= $_GET['monthnumber']; 

(現在棘手的問題)

$sql = "SELECT ........ 

我需要sql select功能做3兩件事:

  • 第1步:找到所有不同的汽車品牌,在2014年銷售的車輛=> SELECT DISTINCT carbrand從example-table年=
  • 步驟2:計算當年每個不同汽車品牌的總銷售額=>選擇每個汽車品牌的「總和(銷售額)」WHERE年= =:年
  • 步驟3:爲了結果被那些總銷售額,DESC => ORDER BY 「SUM(銷售)對於每個汽車品牌」 DESC

    $stmt = $pdo->prepare($sql); 
    $stmt->bindParam(":year", $year); 
    $stmt->execute(); 
    
    if($result = $stmt->fetch(PDO::FETCH_ASSOC)) 
    { 
    ?> 
    
    <?php echo $result['carbrand'];?> <?php echo $result['(sum sales for that brand in a given year'];?> 
    
    <?php 
    }// end if 
    else { 
    echo '0 results'; 
    }// end else 
    ?> 
    

我的例子的結果應該是:

  • 寶馬,5900輛
  • 奔馳,5400
  • 奧迪,5100

我想不出如何編寫正確的sql函數給我這些結果。更具體地說,我沒有得到如何在步驟2和步驟3中包含不同的汽車品牌。

任何人都可以幫助我解決這個SQL函數嗎?

+1

閱讀有關GROUP BY設施的SQL – antlersoft 2014-09-22 17:04:09

+0

沒有表格佈局/數據,無法給出準確的答案。 – James 2014-09-22 17:06:06

+0

http://en.wikipedia。org/wiki/Aggregate_function – 2014-09-22 17:06:21

回答

1

您的考慮幾乎是正確的。只有第一個「獨特」是錯誤的。如果你使用像即SUM(),你幾乎永遠希望將你的數據聚合函數

SELECT 
    carbrand, 
    SUM(sales) totals 
FROM 
    your_table 
WHERE 
    year = 2014 
GROUP BY 
    carbrand 
ORDER BY 
    totals DESC 

Demo

: 正如在評論中指出,你應該使用GROUP BY。因此,您可以在章節Functions and Modifiers for Use with GROUP BY Clauses中找到這些功能。

+0

感謝您的幫助和代碼/演示!我現在瞭解「Group by」功能。 – Stan 2014-09-22 18:18:52