2014-10-10 79 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