2014-10-10 36 views
1

的顯示計數我有6個領域的表:SUM分組COUNT的只有calaculate最大值和最大

partyname state  constituency  candidatename district votes 
    BJP  Maharashtra Nagpur-East  Nitin Gadkari Nagpur  1200 
    AAP  Maharashtra Nagpur-East  Arvind Kejriwal Nagpur  750 
    BJP  Maharashtra Nagpur-West  Vicky   Nagpur  4800 
    AAP  Maharashtra Nagpur-West  Lucky   Nagpur  3500 
    BJP  Maharashtra Nagpur-North Rakesh   Nagpur  100 
    AAP  Maharashtra Nagpur-North Ravan   Nagpur  1500 

我想組partyname,選區與「計數」,行「SUM」

但它只計算每個選區的最大值,然後顯示計數和行總和。

下面是我期望的輸出上面表

partyname  Count 
    BJP   2 

    AAP   1 

bcoz從那格浦爾-east和那格浦爾BJP引線西。所以它顯示計數2 和AAP從那格浦爾商機 - 北方則顯示只有1計數。

PLZ建議我詢問......

<?php 
$state = $rowdst['state']; 
$sqlst = "SELECT MAX(votes) AS Vote,constituency,state, district FROM voter_count where state = '$state' group by constituency, state"; 
$resultst = mysql_query($sqlst); 
while($rowst = mysql_fetch_array($resultst,MYSQL_ASSOC)) 
    { 
    ?> 
    <?php 
      $vote = $rowst['Vote']; 
      $sqlct = "SELECT COUNT($vote) AS counts,partyname,constituency, district FROM voter_count where votes = '$vote' AND state = '$state'"; 
      $resultct = mysql_query($sqlct); 
      $rowct = mysql_fetch_array($resultct,MYSQL_ASSOC) 
     ?>  
      <tr> 
       <td><?php echo $rowct['partyname']; ?></td> 
       <td><?php echo $rowct['counts']; ?></td> 
     </tr> 
<?php } ?> 
+0

我在結果集中看不到選區,注意PHP的mysql_ API早已棄用。 – Strawberry 2014-10-10 06:55:53

+0

馬哈拉施特拉邦vidhan sabha選舉2014發燒... – 2014-10-10 07:28:59

回答

2

假設你不關心同樣的投票爲不同的黨派(處理同票同區計數各方將使查詢要複雜得多,因爲你會在內部查詢得到不可預料的值MAX列):

所有的
SELECT RES.PARTYNAME, COUNT(RES.CONSTITUENCY) AS VOTESCOUNT 
FROM voter_count RES 
JOIN (
    SELECT CONSTITUENCY, MAX(VOTES) AS VOTES 
    FROM voter_count 
    GROUP BY CONSTITUENCY 
) MAXS USING(VOTES, CONSTITUENCY) 
GROUP BY PARTYNAME; 

首先,內部查詢votes選擇最大值。內部查詢執行的結果爲:

Nagpur-East,1200 
Nagpur-North,1500 
Nagpur-West,4800 

然後,加入最大值和計數區。

AAP,1 
BJP,2 
+0

如何從上面查詢這個計數和partname查詢我是新的php .plz sugget me ..... – 2014-10-10 07:52:31

+0

正如你所做的那樣,結果中的列名是'PARTYNAME'和'VOTESCOUNT'。順便說一句,這個問題你貼的國家「PLZ建議我詢問。」 – mudasobwa 2014-10-10 08:01:13

+0

SELECT RES.PARTYNAME,COUNT(RES.CONSTITUENCY)AS VOTESCOUNT FROM voter_count RES JOIN( SELECT選區MAX(投票)是投票 FROM voter_count GROUP BY CONSTITUENCY )MAXS USING(VOTES) GROUP BY PARTYNAME如何回顯上述查詢的輸出 – 2014-10-10 08:22:55

0

閱讀您的問題後,它很難理解你想要什麼作爲輸出結果

SELECT partyname AS 'Party Name',COUNT(candidatename) AS 'can_count',SUM(votes) AS 'sum' 
FROM voter_count 
WHERE votes >= 1500 
GROUP BY constituency 
ORDER BY can_count DESC; 

還要檢查這個SQL Fiddle Link

希望此查詢可以幫助您獲得所需的輸出..

+0

WTF is'votes> = 1500' ??? – mudasobwa 2014-10-10 08:00:00

+0

@mudasobwa WTF是WTF ?? – 2014-10-10 08:03:35

1

這是您的問題的解決方案..希望這會工作..

select t1.partyname as PARTY, count(*) as WinCount 
from voter_count t1, voter_count t2 where t1.votes > t2.votes 
and t1.constituency=t2.constituency 
group by t1.partyname 
+0

這僅適用於雙方。 – mudasobwa 2014-10-10 09:39:17

+0

非常感謝你.....其工作很好....感謝您的幫助 – 2014-10-10 09:41:55

+0

@rajmalhotra:歡迎:) – SonalPM 2014-10-10 10:31:09