SQLを持っている
SQLには、データベースへのクエリを実行するために使用されるさまざまなタイプの操作があります。 SQLのHAVINGステートメントは、最初のクエリの上にあるサブクエリのように機能します。共通の値を持つエントリが圧倒的に多く、それをさらにフィルタリングしたい場合にうまく機能します。この記事では、それがどのように機能するかを見ていきます。
準備
MySQLを使用したこのSQLFiddleでは、これらの例に使用されるサンプルスキーマを作成しました。
create table Cars ( id INT PRIMARY KEY, year VARCHAR(50), car_make VARCHAR(50), car_model VARCHAR(50) );
これにより、「Cars」というテーブルが作成され、各車のメーカーモデルと年を確認するスキーマが作成されます。次のブロックは、これらの列に値を挿入します。
insert into Cars (id, year, car_make, car_model) values (1, 2011, 'Mazda', 'Miata MX-5'); insert into Cars (id, year, car_make, car_model) values (2, 1969, 'Ford', 'Mustang'); insert into Cars (id, year, car_make, car_model) values (3, 2007, 'Toyota', '4Runner'); insert into Cars (id, year, car_make, car_model) values (4, 2013, 'Porsche', '911'); insert into Cars (id, year, car_make, car_model) values (5, 1991, 'Buick', 'Coachbuilder'); insert into Cars (id, year, car_make, car_model) values (6, 2007, 'Kia', 'Sportage'); insert into Cars (id, year, car_make, car_model) values (7, 1997, 'Oldsmobile', 'Cutlass Supreme'); insert into Cars (id, year, car_make, car_model) values (8, 2003, 'BMW', '7 Series'); insert into Cars (id, year, car_make, car_model) values (9, 1996, 'Ford', 'F150'); insert into Cars (id, year, car_make, car_model) values (10, 1992, 'Suzuki', 'SJ'); insert into Cars (id, year, car_make, car_model) values (11, 2001, 'Jeep', 'Grand Cherokee'); insert into Cars (id, year, car_make, car_model) values (12, 2000, 'Ford', 'F250'); insert into Cars (id, year, car_make, car_model) values (13, 2003, 'Honda', 'Insight'); insert into Cars (id, year, car_make, car_model) values (14, 2006, 'Chevrolet', 'HHR Panel'); insert into Cars (id, year, car_make, car_model) values (15, 1987, 'Mercedes-Benz', 'S-Class'); insert into Cars (id, year, car_make, car_model) values (16, 2004, 'Chevrolet', 'SSR'); insert into Cars (id, year, car_make, car_model) values (17, 1990, 'Maserati', '228'); insert into Cars (id, year, car_make, car_model) values (18, 2005, 'Saturn', 'Ion'); insert into Cars (id, year, car_make, car_model) values (19, 1987, 'Audi', '5000CS'); insert into Cars (id, year, car_make, car_model) values (20, 1999, 'Chevrolet', 'S10'); insert into Cars (id, year, car_make, car_model) values (21, 2007, 'Jeep', 'Liberty'); insert into Cars (id, year, car_make, car_model) values (22, 2002, 'Lamborghini', 'Murciélago'); insert into Cars (id, year, car_make, car_model) values (23, 2000, 'Hyundai', 'Tiburon'); insert into Cars (id, year, car_make, car_model) values (24, 2011, 'Jeep', 'Patriot'); insert into Cars (id, year, car_make, car_model) values (25, 1985, 'Pontiac', 'Sunbird');
この演習で独自のデータをモックしたい場合は、mockaroo.comを使用してモックすることをお勧めします。このメソッドを使用すると、データベーススキーマを非常に簡単に構造化できます。
HAVINGの使用方法
SELECT COUNT(id), car_make FROM Cars GROUP BY car_make HAVING COUNT(id) > 0;
集計関数を使用する必要があり、WHERE句を使用できない場合は、HAVINGを使用します。集計関数は、ある種の操作を実行し、単一の値を返す関数です。 COUNT、AVG、またはSUMを考えてください。上記のコードは次を返します:
COUNT(id) | car_make |
1 | アウディ |
1 | BMW |
1 | ビュイック |
3 | シボレー |
3 | フォード |
1 | ホンダ |
1 | ヒュンダイ |
3 | ジープ |
1 | 起亜 |
1 | ランボルギーニ |
1 | マセラティ |
1 | マツダ |
1 | メルセデスベンツ |
1 | オールズモビル |
1 | ポンティアック |
1 | ポルシェ |
1 | 土星 |
1 | 鈴木 |
1 | トヨタ |
selectステートメントを使用して存在するcar_makesのsqlCOUNTを取得し、groupby句を使用してそれらをcar_makeで区切ります。
参加者の81%は、ブートキャンプに参加した後、自分たちの技術的な仕事の見通しについてより自信を持っていると述べました。今日のブートキャンプにマッチしましょう。
平均的なブートキャンプの卒業生は、ブートキャンプの開始から最初の仕事を見つけるまで、キャリアの移行に6か月も費やしませんでした。
これですべてです。注意として、SQLクエリのHAVING句は、集計関数を使用してデータベースに対して追加のクエリ作業を実行するサブフィルターです。
他の集計関数を試して、この一意の句の知識を増やしてください!
-
SQLServerのHAVING句
HAVING句は、SQL Server(Transact-SQL)のGROUP BY句と組み合わせて使用され、条件が満たされている場合にのみ、返される行のグループを制限します。 SQLServerのHAVING句の構文 SELECT bie uthuc1, bieuthuc2, … bieuthuc_n, ham_tong (bieuthuc) FROM bang [WHERE dieukien] GROUP BY bieuthuc1, bieuthuc2, … bieuthuc_n HAVING dieukie n_having; 変数名または変数値 ham_t
-
SQL検疫
このブログ投稿では、SQL検疫の概念を紹介しています。 Oracle®ResourceManagerを使用すると、CPUやI/Oなどのリソースの使用を規制および制限できます。最も興味深い事実は、定義されたしきい値を超える長時間実行クエリの実行を防ぐことができるということです。 SQL検疫とは何ですか? 検疫とは隔離を意味します。 SQL検疫は、暴走クエリのオーバーヘッドを排除するために使用できるバージョン19cの機能です。暴走クエリは、リソースまたはランタイムの制限を超え、リソース、CPU、およびIOの多くを使用するため、ResourceManagerによって終了されるクエリです。 この