0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MYSQLで「重複行のデータ数」を取得する

Last updated at Posted at 2019-04-29

SQLといえばSELECTとWHEREが使える程度のSQL初心者の私が、HACKERRANKでSQLの基礎を学んでいた時に直面した問題

以下のデータベースから「CITYが重複している行のデータ数」を取得せよ

STATION テーブル

Field Type
ID NUMBER
CITY VARCHAR
STATE VARCHAR
LAT_N NUMBER
LONG_W NUMBER

...やばい 意外とわからんかも

ステップ1 まずは普通のCOUNTのおさらい

SQLで行数を知りたいときはCOUNT(カラム名)を使う
今回の場合、全ての行数を知りたければこれ

SELECT COUNT(CITY) FROM STATION

次に「重複していない行数のみ」を知りたい場合、COUNT(DISTINCT カラム名)を使う
今回の場合は以下

SELECT COUNT(DISTINCT CITY) FROM STATION

やりたいこととしては、単にこの差が取りたいだけなんだけど、、、どうやってとればいいんだろう、、、
なんかSQLlってUSER定義の変数指定できたよね? 変数に代入して えーっとえっと、、、

ステップ2 素直に引き算する

ごちゃごちゃ考えるまでもなかった 以下でいい

SELECT COUNT(CITY) - COUNT(DISTINCT CITY) FROM STATION

そう、COUNT関数で得られる値は普通の数字なのでselect文の中で引き算ができる(逆になぜ気づかなかった)
SQLマスターまでの道のりはまだまだ遠そうです、、、

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?