2016-12-01 4 views
0

最近、いくつかのSQLを学習しようとしており、この問題が発生しています。 私はdbから要求された、国名とその資本を表示するページをdivで作成しました。しかし、私は、特定の国に100万人以上の人口を含む都市の数に基づいてディスプレイを注文できる機能を追加したいと考えています。私はここで必要なクエリを把握することはできません。同じ数の行数を取得する

数字がの同じ国の人口が100人を超える都市はどのようにして得られますか?私のテーブルフォーマットはそのままです。例えば、イングランド3、インディアン1などの基準を満たす2つの英語都市があるので、イングランドは2を返すはずです。

ユニオンクエリを試しましたが、最初のクエリの値を保持できません。

どうすればいいですか?

表A

*-----------------*------------* 
| COUNTRY NAME | CAPITAL | 
|  England  | London  | 
|  India  | New Delhi | 
|  US   | DC   | 
|     |   | 
*-----------------*------------* 

表Bあなたの助けを

*-----------------*------------------------------* 
| COUNTRY NAME |Cities with a population > 1m | 
|  England  | London      | 
|  England | Birmingham     | 
|  India  | New Delhi      | 
|  US   | DC       | 
|  US  | New York      | 
|  US  | LA       | 
*-----------------*-------------------------------* 

ありがとう!

答えて

0

私は、表Bのすべての値が必要な人口以上の都市であると仮定しています。 Oracleデータベースの場合の結果を制限するwhere句..

SELECT [COUNTRY NAME], COUNT([COUNTRY NAME]) 
FROM Table B 
GROUP BY [COUNTRY NAME] 
+0

おかげで、ゆっくりと構文を学び、拾い、それをやりました。ありがとう –

+0

問題ありません。誰もが最初に助けを必要とします。 – Snowlockk

+0

大括弧はInnoDBでは機能しません。 –

0

を追加しない場合 それは次のようになります。

select a.c_name, a.c_quan 
from (select country_name c_name, count(country_name) c_quan 
     from table_b 
     group by country_name) a 
order by a.c_quan; 
+0

InnoDBでは、サブクエリなしで実行できます。 –

0
SELECT country, 
     COUNT(*) AS NumCities 
    FROM countries 
    WHERE population > 100 
    GROUP BY country; 

出力例:

+---------+-----------+ 
| country | NumCities | 
+---------+-----------+ 
| ad  |   7 | 
| ae  |   3 | 
| af  |  48 | 
| ag  |   8 | 
| ai  |   1 | 
| al  |  66 | 
| am  |  287 | 
| an  |  13 | 
| ao  |  32 | 
| ar  |  84 | 
| at  |  221 | 
... 
| us  |  4175 | 

変動、今度は100万回チェック:

SELECT country, COUNT(*) AS NumCities 
    FROM cities WHERE population > 1e6 
    GROUP BY country 
    ORDER BY NumCities DESC 
    LIMIT 11; 
+---------+-----------+ 
| country | NumCities | 
+---------+-----------+ 
| cn  |  41 | 
| in  |  33 | 
| br  |  14 | 
| ru  |  12 | 
| jp  |  11 | 
| id  |  10 | 
| mx  |   9 | 
| us  |   9 | 
| pk  |   8 | 
| ir  |   7 | 
| ng  |   7 | 
+---------+-----------+ 
11 rows in set (0.83 sec) 

他の変形:

SELECT country, city, FORMAT(population, 0) 
    FROM cities 
    WHERE population > 1000000 
    ORDER BY RAND() 
    LIMIT 11; 
+---------+----------------+------------------------+ 
| country | city   | FORMAT(population, 0) | 
+---------+----------------+------------------------+ 
| in  | Vadodara  | 1,409,565    | 
| in  | Indore   | 1,837,230    | 
| am  | Yerevan  | 1,093,499    | 
| br  | Recife   | 1,478,118    | 
| mm  | Mandalay  | 1,208,227    | 
| lb  | Bayrut   | 1,252,010    | 
| ht  | Port-au-Prince | 1,234,750    | 
| ph  | Manila   | 10,443,877    | 
| sa  | Riyadh   | 3,469,290    | 
| pk  | Faisalabad  | 2,507,302    | 
| cn  | Lanzhou  | 1,417,742    | 
+---------+----------------+------------------------+ 
11 rows in set (0.98 sec) 
関連する問題