0

これが私のコードです

 select count(  model.voter.voterId),  


 SUM( CASE WHEN model.voter.age BETWEEN  :AGE18 and :AGE25 THEN 1 ELSE 0 END) as ageCount ,  
 SUM( CASE WHEN model.voter.age BETWEEN  :AGE26 and :AGE35 THEN 1 ELSE 0 END) as ageCount ,  
 SUM( CASE WHEN model.voter.age BETWEEN  :AGE36 and :AGE45 THEN 1 ELSE 0 END) as ageCount ,  
 SUM( CASE WHEN model.voter.age BETWEEN  :AGE46 and :AGE60 THEN 1 ELSE 0 END) as ageCount , 
 SUM( CASE WHEN model.voter.age > :AGE60 THEN 1 ELSE 0 END) as ageC  from User model  where  model.voter.voterId in(:voterIds) 

私は21個のオブジェクトを渡しましたが、22を select count( distict model.voter.voterId)21にしたときにのみ22の結果も表示されますが、合計の結果はまだ22です

合計条件を個別にすることはできますか? どうやって?

select count(uservoterd0_.voter_id) as col_0_0_, SUM(case when voter1_.age between 18 and 25 then 1 else 0 end) as col_1_0_, SUM(case when voter1_.age between 26 and 35 then 1 else 0 end) as col_2_0_, SUM(case when voter1_.age between 36 and 45 then 1 else 0 end) as col_3_0_, SUM(case when voter1_.age between 46 and 60 then 1 else 0 end) as col_4_0_, SUM(case when voter1_.age>60 then 1 else 0 end) as col_5_0_ from user_voter_details uservoterd0_ inner join voter voter1_ on uservoterd0_.voter_id=voter1_.voter_id where uservoterd0_.voter_id in (? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ?)
4

1 に答える 1

0

21 のユーザー ID を渡しているのに から 22 の値を取得している場合count()、データに重複した行があります。

このクエリを実行して、重複がどこにあるかを確認してください。

select cnt, count(*), min(voterId ), max(voterId)
from (select voterId, count(*) as cnt
      from user u
      group by voterId
     ) t
group by cnt
order by cnt desc
于 2013-05-02T13:17:37.293 に答える