1

ID、Newspaper、および CreditCards という名前の列がある SQL の Questionnaire というテーブルがあります。少なくとも 3 枚のクレジット カードを持っている ID の中で最も人気のある新聞を出力する必要があります。

例:

ID クレジットカード 新聞
--------------------------------------------
10354 3 独立者
12154 4 独立者
11354 2 ザ・タイムズ
14587 3 デイリーメール
19874 5 サンデーニュース
16847 1 独立者

上記のクエリを出力する SQL コマンドを教えてください。

4

2 に答える 2

2
select *
from (
    select newspaper, 
           rank() over (order by count(*) desc) as rnk
    from Questionnaire
    where credit_cards >= 3
    group by newspaper
) t
where rnk = 1

2つの新聞が同じ「人気」を持っている場合、両方が返されます。

SQLFiddleデモ:http ://sqlfiddle.com/#!4 / 16dcb / 1

于 2012-11-16T18:35:17.947 に答える
0

最も人気のある新聞のみを取得したい場合は、これでクエリを解決できます。

select 
    newspaper
    , count(1) as fct 
from 
  Questionnaire 
where 
  CreditCards >= 3
group by newspaper 
having fct = 
            (
              select 
                max(ct) 
              from 
                ( 
                    select 
                        newspaper 
                        ,count(1) as ct 
                    from 
                        Questionnaire 
                    where 
                        CreditCards >= 3 
                    group by newspaper
                )
             )
/
于 2012-11-16T17:10:10.470 に答える