これは何「来年こそはSQL書けるようになるぞ」と思ってる方に向けた、1日1時間・3か月でSQLそこそこできるようになる学習方法について書いた記事です長文がつらつら書いてある本稿ですが、要するに言いたいことは
特定の1日の1分ごとに作成されたレコード数を取得してみる (hoge_table の created_at カラムで集計) SELECT to_char(created_at, 'YYYY-MM-dd hh24 MI') AS t_time, COUNT(id) AS amount FROM hoge_table WHERE created_at BETWEEN '2021-10-22 00:00:00' AND '2021-10-22 23:59:59' GROUP BY t_time ORDER BY t_time ; こんな感じかな 参考リンク PostgreSQL: Documentation: 9.1: Data Type Formatting Functions PostgreSQLで日次、週次、月次の集計をする - Qiita
こんにちは、Development Teamの三宅です。 先日、社内(AI事業本部内)でSQL研修の講師を担当したので、今回はその内容について簡単に共有したいと思います。 はじめに 例年、AI事業本部では、新卒エンジニアの育成のためにソフトウェアエンジニア研修を行っております。今年はフルリモートでの実施となりました。研修期間は2週間ほどで、内容は前半が講義、後半が実践(チーム開発)でした。私が担当したのは、講義パートの一部であるSQL研修です。SQLやRDBにあまり慣れていない人でも、できるだけ体系的な学びが得られるようにすることを目標に、様々な資料をまとめて提供する方針で準備しました。結果的には、ハンズオン込みで4時間ほどのやや長い講義となりましたが、勉強になったという声も頂けたのでやって良かったと思っています。 研修資料 研修内容 SQL研修の内容は、基本的には大学のデータベース講義で
このページでは、ORACLEデータベースのSQLで、条件に一致するレコードが存在しない場合だけ、INSERTする方法を紹介します。 条件に一致するレコードが存在しない場合だけINSERTする方法はいくつかあるので順々に紹介していきます。 INSERT文のサンプルは↓で多数紹介していますので参考にしてください。 >>【SQL】INSERT文の書き方:サンプル多数あり レコードが存在しない場合だけINSERTする方法 NOT EXISTSを使ってINSERTする方法 条件に一致しない場合によく使うのがNOT EXISTSです。 例えば、TAB2テーブルから、TAB1テーブルにデータを登録するときです。 TAB1テーブルに存在しないデータだけを登録したい場合には、NOT EXISTSを使います。 INSERT INTO tab1(col1,col2) SELECT a.col1 ,a.col2
はじめに 私は今までは SQLクライント に LINQPad を利用していました。 しかし、LINQPad は Mac に GUI 対応していないため代替ソフトを探していたら VSCode でいけそうだったのでその設定方法を紹介します。 前提条件 VSCode がインストールされていること インストール SQLTools を導入する Extensions から SQLTools を検索しインストールを実行します。 使い方 新規コネクションの追加 まず、SQLTools のメニューから Add new connection を選択します。 すると接続先 Database の種類を選択する画面が表示されるので、適切なものを選択します。 一覧にない場合は Get more drivers をクリックして、適切なものを追加インストールしてください。 接続先 Database の種類を選択すると C
概要 全般 推奨 非推奨 命名規則 通則 表 列 別名、相関名 ストアド・プロシージャ 統一的接尾辞 問合せ文 予約語 空白類 インデント 望ましい形式 Create文 データ型の選択 デフォルト値の指定 制約とキー 非推奨設計 付録 予約語リファレンス SQLスタイルガイド(日本語訳) 日本語訳について 日本語訳は誤訳や原文の最新版に追随していない恐れがあります。誤訳や改善点があれば、GitHubのissueまたはpull requestを使用するか、Twitterでお知らせください。 翻訳: 久利史之 @nkuritw 概要 このガイドラインは利用の他、forkしたり、自分自身のものに改変したりすることができます。ここで大事なのはスタイルを選択しそれを踏襲することです。変更の提案やバグの修正にはGitHubのissueまたはpull requestを使用してください。 このガイドライン
たまに突然必要になるが、忘れそうなのでメモ。OLAP関数(Window関数、分析関数とも)一発で済むのがご利益。確認してないけど、OLAP関数が使えるDBならどれでも行けるハズ。 重複行が発生すること自体、絶対DB設計が間違ってるよね、とのヤジには、ワタシは心中では大いに賛同するものの、口にする勇気はないです…。 重複行削除のSQL -- テーブルの用意 create table OLAPDeleteT(Val1 integer,Val2 integer); insert into OLAPDeleteT values(1,1),(1,2),(1,2),(1,2),(1,2),(2,1),(2,1); -- 以下が本体 delete from (select Row_Number() over(partition by Val1,Val2) as rn from OLAPDeleteT)
2020-06-05 ZOZOSUITからZOZOMATへ - CQRSによる解決アプローチ Scala DDD CQRS AWS はじめに こんにちは、計測プラットフォーム部バックエンドチーム、テックリードの児島(@cozima0210)です。この記事では、ZOZOSUITとZOZOMATの違いにより生じたバックエンド開発における課題と、その解決のためにCQRSアーキテクチャを採用した経緯、そして… ZOZOSUITからZOZOMATへ - CQRSによる解決アプローチ 2020-05-29 深層学習×集合マッチングによるコーディネート選択 ディープラーニング 機械学習 ZOZO Researchの斎藤です。私たちはファッションコーディネートの推薦や生成の基礎として、深層集合マッチングという技術を研究しています。本記事では、深層集合マッチングを理解する上で必要な諸概念の説明と、ファッショ
データを登録する時に同一のデータがある場合は挿入したくないって時に使えるSQL。 同一のデータが入っている場合エラーが出たりで困ります。 これを使用すれば同一行は挿入しないようにしてくれます。 説明用サンプルテーブル CREATE TABLE IF NOT EXISTS `M_USER` ( `MAIL_ADDRESS` varchar(50) DEFAULT NULL COMMENT 'メールアドレス', `PASSWORD` varchar(50) DEFAULT NULL COMMENT 'パスワード', PRIMARY KEY (`MAIL_ADDRESS`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='ユーザマスタ' AUTO_INCREMENT=1 ; 通常のSQL INSERT INTO M_USER VALUES ('hoge
SQLをローカルでフォーマットするツールを探していてsqlparseというツールを見つけたので試してみました。 インストール sqlparseはPython製でpipを使ってインストールすることができます。 ウェブ上で使用する sqlparseはSQLFormatというオンラインサービスで使用されており、ブラウザやAPIでSQLを渡してフォーマットすることができます。 SQLFormat - Online SQL Formatter コマンドラインで使用する sqlparseをインストールすると使用可能になるsqlformatというコマンドに ファイルか標準入力でSQLを入力するとフォーマットされたSQLが出力されます。 -r で改行・インデント、-k upper でキーワードを大文字にすることができます。その他のオプションについては-h オプションで確認することができます。 $ SQL=
下記の設定は Microsoft SQL Server ですが、少し書き換えれば他の RDB でも使えるはずです。 今回対象にしたのは, SQL Server 2005 です。 必要なものは EmacsWiki: Sql Mode EmacsWiki: sql.el EmacsWiki: Sql Indent EmacsWiki: Sql Complete EmacsWiki: Sql Transform auto-install で入りました。なかなか便利になりました。 Management Studio は重苦しいので少し不満でした。Emacs キーバインドになりそうもありませんし。Enterprise Manager の軽さが懐かしいです。 以下設定。 .emacs;; C-c C-c : 'sql-send-paragraph ;; C-c C-r : 'sql-send-regi
主な内容 --Page 1-- ▼データを追加するINSERT文 ▼列を省略したINSERT文 ▼SELECTを利用したINSERT文 --Page 2-- ▼データの更新を行うUPDATE文 ▼行の削除を行うDELETE文 ▼まとめ これまで7回にわたってSELECT文の利用法を取り上げてきましたが、今回はデータの操作を行うための文、「INSERT」「UPDATE」「DELETE」を取り上げます。 これらの命令文はそれぞれデータの追加、更新、削除といったデータの操作を行うためのものです。連載の第1回「初めてSQLコマンドを叩く緊張と感動の一瞬」でデータの操作を行う命令文をデータ操作言語(DML:Data Manipulation Language)と分類する、と解説しましたが、SELECT文と今回取り上げる命令文でDMLにひととおり触れることになります。DMLをマスターできれば、SQLの
こんにちは、データ分析部の石塚です。 Gunosyではエンジニア以外の職種でもSQLを叩いて自らデータを集計・分析するという習慣と全社員が各サービスのログ*1に触ることができる環境があります。 例えば、ユーザー獲得を担っているプロモーションチームはエンジニアが0名のチームなのですが、実際にSQLを叩いています。 それによって、自分たちの獲得したユーザーはどのような行動をしているのかを確認したり、分析することができています。 これはGunosyのみの事例ではなく、AWSのRedshiftやAthena、GCPのBigQueryが台頭してきたおかげで、どの会社も低コストにログをSQLで集計・分析できる基盤が整ってきています。 個人的にはアプリやウェブの業界で働くマーケターにはSQLは必須の知識と言える時代になってきたと感じています。 そこで今回は特別プログラミングなどの経験が無い人でも、SQL
最近は社内でSQLの啓蒙活動をしています。 幸いにも何人か興味を持ってもらったので、一通りSQLを学べそうな「SQL書き方ドリル」を会社で買ってもらったので、 SQLとあわせて啓蒙中のre:dashから、書籍付属のサンプルDBを使って、手を動かしながら勉強できるような環境を作ってみました。 改訂第3版 すらすらと手が動くようになる SQL書き方ドリル (WEB+DB PRESS plus) 作者: 羽生章洋,和田省二,菅井大輔出版社/メーカー: 技術評論社発売日: 2016/04/12メディア: 大型本この商品を含むブログを見る 前提 お使いの環境でVagrantが使えるようになっている環境を前提とします。 Macで動作確認していますが、Windows, Linuxでも動くと思います。 準備 re:dashをGitHubからcloneします。 $ git clone https://git
trdsqlというコマンドラインツールを作りました。 Goで作ってます。 githubの trdsqlからダウンロード出来ます。 またLinux/Windows/macOSのバイナリもあります。 以下は、古くなっている内容もいくつかあります。 最新版に対応した、より詳細な内容は trdsql 目次 | Noboru Saito's page を参照して下さい。 これは何? 簡単に言えばCSV(TSV含む)やLTSVに対してSQLを実行できるツールです。 同様のツールが q や textql 等いくつかあります。 trdsqlはPostgreSQLドライバとMySQLドライバを含んでいて実際にDBに接続することでSQLite以上の機能を使用できるようにしています。 PostgreSQLやMySQLの構文が使えるだけではなく、CSVファイルと実テーブルでJOINしたり、CSVファイルからテーブ
なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策 『SQLパフォーマンス詳解』の翻訳者の松浦隼人さんに、8つの「SQLが重たくなる原因とその対策」を聞きました。システムのボトルネックになるような「問題のあるSQL」を回避するノウハウを学びましょう。 データの操作や定義をする言語「SQL」は、どのような領域を担うエンジニアにとっても必修科目です。しかし、その仕様をきちんと理解し、パフォーマンスに優れたSQLを書ける方はそれほど多くありません。問題のあるSQLを書いてしまい、知らぬ間にそれがシステムのボトルネックになってしまう事態はよく発生します。 では、どうすればそうした事態を回避できるのでしょうか? そのノウハウを学ぶため、今回は『SQLパフォーマンス詳解』の翻訳者であり、自身もエンジニアでもある松浦隼人(まつうら・はやと/@dblmkt)さんに8つ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く
{{#tags}}- {{label}}
{{/tags}}