MySQL
- SQLのCASE文の書き方がわからない
あるサービスの閲覧履歴のテーブルがあります。 カラムは 閲覧日時(yyyy/mm/dd hh:mm:ss)、 会員ID、 コンテンツID、 パーティション(yyyy-mm-dd) 上記の様になっています。 コンテンツIDは4桁+5桁の組み合わせになっ ていて、 前の4桁はジャンル(占い、グルメ、ファッションなど)になっています。 パーティションは日毎にあります。 このテーブルから 週毎にそれぞれのジャンルをどれくらい閲覧したのか集計したいです。 やりたいアウトプットのイメージは下記のようなものです 10/06~10/12 10/13~10/19 10/20~10/26 ジャンルA 200 400 300 ジャンルB 300 200 200 1日に同じ会員IDが複数回見た場合に「1回」とカウントする場合と「複数回」とカウントする2パターンを考えています。 週毎の一つ一つのコンテンツを集計することは調べてできるようになったのですが まとめて集計する方法がうまくできず困っています。 前任者からうまく引き継ぎができなかったことと、社員に質問して答えてくれそうな人がいないため困っています。 hiveSQL というのを使っています。 クロス集計をするにはCASE文というのを書けば良いことはわかって、 ネットに出ている例を当てはめて見ようとしたのですが、 うまくできません。 やり方を教えていただけないでしょうか。 SQLだけでやる方法でも、エクセルのピボットテーブルと組み合わせるようなやり方でも教えていただけると助かります。 よろしくお願いいたします。
- 締切済み
- MySQL
- noname#250058
- 回答数2
- このぐるぐるSQLクエリまとまりますか?
ピボット集計の理解が難しくて難儀してます このような予定表を作るのですが毎月ごとに集計してやるのに 4回問い合わせております。一回でえいやっと投げるにはどう記述しましょう? mysql 5.0です -- 今月 -- SELECT 商品番号,sum(受注金額) FROM 注文受付テーブル where DATE_FORMAT(納入日, '%Y%m') = DATE_FORMAT(NOW(), '%Y%m') group by 商品番号; -- 来月 -- SELECT 商品番号,sum(受注金額) FROM 注文受付テーブル where DATE_FORMAT(納入日, '%Y%m') = DATE_FORMAT(NOW()+ INTERVAL 1 MONTH, '%Y%m') group by 商品番号; -- 再来月 -- SELECT 商品番号,sum(受注金額) FROM 注文受付テーブル where DATE_FORMAT(納入日, '%Y%m') = DATE_FORMAT(NOW()+ INTERVAL 2 MONTH, '%Y%m') group by 商品番号; -- ささらい月 -- SELECT 商品番号,sum(受注金額) FROM 注文受付テーブル where DATE_FORMAT(納入日, '%Y%m') = DATE_FORMAT(NOW()+ INTERVAL 3 MONTH, '%Y%m') group by 商品番号;
- 締切済み
- MySQL
- Passerby01
- 回答数2
- utf8mb4でもInsertエラー
エンコーディング「SQL_ASCII」で作成されたpostgreSQLのデータを、MySQLに取り込む作業を行っています。 初めMySQL側のデータベースを「utf8」で作成していたのですが、絵文字やサロゲートペアに対応していないとのことで、「utf8mb4」に変更しました。 にも拘わらず、INSERT時に以下のエラーメッセージがでます。 exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE3\x82' for column 'note' at row 1' in ・・・ 「utf8mb4」にした際に行ったことは以下です。 --my.cnf [mysqld] character-set-server=utf8mb4 [client] default-character-set=utf8mb4 -- mysqlを再起動した後、各character_setが「utf8mb4」に変更されたことを確認し、 新しくデータベースを生成し、テーブルを作成しました。 CREATE DATABASE `testdb` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ となったので、問題ないと考えています。 問題の文字をスルーしてInsertするか、問題の文字のみを除去してInsertするかしたいのですが、できずにいます。 何か足りない操作等があるのでしょうか・・ 是非お力をお貸しいただきたく思います。 よろしくお願いいたします。
- sqlの積について
以下、2つのテーブルがあるとします。 cake (テーブル) id, name, price (カラム) 1, チョコ, 300 2, マッチャ, 250 3, イチゴ, 400 4, チーズ, 200 sold (テーブル) name, num, total_sales (カラム) チョコ, 3, " " マッチャ, 4, " " イチゴ, 1, " " チーズ, 5, " " (total_salesは空欄という設定です) この2つのテーブルにおいて、inner joinを使い、nameをカギとしてcakeとsoldを結びます。 (select * from cake inner join sold on cake.name = sold.name;) そのあと、各商品においてpriceとnumの積を計算し、total_salesに結果をupdateするにはどうすればいいのでしょうか… update = sold set sold.total_sales = cake.price* sold.num from cake inner join sold on cake.name = sold.name; や UPDATE S SET total_sales = S.num * C.price FROM cake as C inner join sold as S ON C.name = S.name などいろいろ試してみましたが、どうしてもできません…
- 締切済み
- MySQL
- _harihari_co
- 回答数2
- oracle sql12c の勉強とmysql
oracle 12c の資格がほしくて勉強しています。 mysql(mysql8だと安定性がないので5.7をインストールしたいです。)をインストールしましたが、失敗しました。 customを選んでmysql インストラーの画面で何も表示がされません。 どうすればいいのかわかりません。教えて下さい またsqlpulsのインストールもわかりません。教えて下さい。 ※pcにはvisual studio C++が入っています。 参考になるサイトや本もあれば教えて下さい
- 締切済み
- MySQL
- sumiyakico
- 回答数1
- SQL 重複レコード
テーブルの結合で重複レコードが出ます 結合させるテーブルは、どちらも重複してません。 紐付けられるキーになりそうな共通のカラムは1つだけです。2つ設定するのは難しいです。 重複が起きている原因が分かりません。 どんな原因が考えられるか教えて下さい。
- SQL未経験が一人前になるまで
週5日毎日8時間 SQL未経験の方がSQLを使って150行ほどのクエリを打ちデータの正確性を担保したものを出す場合、何ヶ月かかるのが一般的ですか? 遅くて何ヶ月、早くて何ヶ月でしょうか? ※英語は、義務教育で習った程度のレベルの方に設定した場合にします。 ※個人差はあるのは、理解してます。 分析に必要なデータを集計し可視化する仕事での場合です。 下記のようなSQLを使います。 with句 count Ave sum max min 演算式 detadiff between where句 cast case when join(内部,外部) split over句 rank rownuber
- $ sudo nano 50-server.cnf
$ sudo apt install mariadb-server $ cd /etc/mysql/mariadb.conf.d/ $ sudo nano 50-server.cnf #111-112行目編集 character-set-server = utf8 #collation-server = utf8mb4_general_ci $ sudo systemctl restart mariadb 度々すいません。 $ sudo nano 50-server.cnf で中身のデータが消えてしまいました。 nanoは行数が書いてないのでviで編集してもいいだろう。と、思いました。 すると、何も書いてないのです。 geditも何も書いてありませんでした。 どう対処すればいいでしょうか? ご回答の程、宜しくお願い申し上げます。
- wp-config.phpで保存するのでしょうか?
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** // /** WordPress のためのデータベース名 */ define('DB_NAME', 'wordpress'); /** MySQL データベースのユーザー名 */ define('DB_USER', 'kouzou'); /** MySQL データベースのパスワード */ define('DB_PASSWORD', 'rhythmkt0'); /** MySQL のホスト名 */ define('DB_HOST', 'localhost'); /** データベースのテーブルを作成する際のデータベースの文字セット */ define('DB_CHARSET', 'utf8'); /** データベースの照合順序 (ほとんどの場合変更する必要はありません) */ define('DB_COLLATE', ''); 以下にデータベース接続のための詳細を入力してください。これらのデータについて分からない点があれば、ホストに連絡を取ってください。 データベース名 wordpress WordPress で使用したいデータベース名。 ユーザー名 kouzou データベースのユーザー名。 パスワード rhythmkt0 データベースのパスワード。 データベースのホスト名 localhost localhost が動作しない場合には Web ホストからこの情報を取得することができます。 テーブル接頭辞 wp_1 ひとつのデータベースに複数の WordPress をインストールしたい場合、これを変えてください。 wp-config-sample.phpを上記のように入力してwp-config.phpで保存するのでしょうか? LinuxMintを使っています。 いつも、マグレでここをパスしてたのですが理屈を分かっていません。 どなたかアドバイスをください。 宜しくお願い申し上げます。
- 助けて下さい SQL
グーグルのビッグクエリで SQLを使ってます。 データ型の日付でmax関数を使って ユーザーの直近日を出したいのですが 直近日が上手く出ずにいます。 複数日でる状態です。 原因が分かりません。 直近日を出す方法を教えて下さい。
- mariadbが稼働しない。
# yum install mariadb mariadb-server メタデータの期限切れの確認は、0:58:31 時間前の 2019年03月22日 06時36分31秒 に実施しました。 パッケージ mariadb-3:10.2.19-1.fc27.x86_64 は既にインストールされています。スキップします。 パッケージ mariadb-server-3:10.2.19-1.fc27.x86_64 は既にインストールされています。スキップします。 依存性が解決されました。 行うべき処理がありません。 完了しました! [root@localhost kouzou]# systemctl start mariadb.service Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details. いつも教えていただきありがとうございます。 上記の件。 mariadbがインストールされてるにも関わらずstartさせるとエラーになります。 どうすれば稼動するでしょうか? ご多忙の所、申し訳ありません。 ご回答の程、宜しくお願い申し上げます。
- MySQL接続エラーになる
DB作成、ユーザー作成とDBに対するALL権限付与を行い、 ました。後日お客様のPCよりMySQL Workbenchにて DBサーバに接続しようとしたところエラーになってしまい、原因調査を しております。 6000番の接続エラー画面が出ており、以下を確認いたしましたが、 問題が見つけられませんでした。 ・DBサーバIP ・ポート番号 ・パスワード ・ユーザー権限 ・DBサーバからお客様間のFW設定 その他調査するべきところ、お教えいただきたくお願いいたします。
- mysql いろんな条件
mysql いろんな条件 下記のようなテーブルより table1 3,60,,,,,テスト1,科目A 4,59,,,,,テスト1,科目B 3,60,,,,,テスト1,科目A 1,80,,,,,テスト1,科目B 3,60,,,,,テスト1,科目A 4,59,,,,,テスト1,科目B 5,23,,,,,テスト1,科目A 5,23,,,,,テスト1,科目B 7,13,,,,,テスト1,科目A table2 1,80,,,,,テスト1,科目B 3,60,,,,,テスト2,科目A 4,59,,,,,テスト2,科目B 3,60,,,,,テスト2,科目A 1,80,,,,,テスト2,科目B 3,60,,,,,テスト2,科目A 4,59,,,,,テスト2,科目B 5,23,,,,,テスト2,科目A 5,23,,,,,テスト2,科目B 7,13,,,,,テスト2,科目A 1,80,,,,,テスト2,科目B ↓ 結果1 テスト1,2,0,3,5 テスト2,2,0,3,5 結果2 科目A,0,0,6,4 科目B,4,0,0,6 現在 select count(*) from table1 where col7 = 'テスト1' and col1 = 1 select count(*) from table1 where col7 = 'テスト1' and col1 = 2 select count(*) from table1 where col7 = 'テスト1' and col1 = 3 select count(*) from table1 where col7 = 'テスト1' and col1 >3 このように1つ1つできていているのですが、 まとめてできる方法を知らないです。 また、1つずつやるとその分時間がかかります。 さらに1つのテーブルのみでしかやり方を知りません。 上記のようなテーブルから 結果1 テスト1,2,0,3,5 テスト2,2,0,3,5 結果2 科目A,0,0,6,4 科目B,4,0,0,6 このようなテーブルにする方法を教えてください
- 何故、通らないのでしょうか?
何故、通らないのでしょうか? socketの設定がおかしいのでしょうか? ご回答のほど、宜しくお願い申し上げます。 ~/wordpress$ sudo mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2 "No such file or directory") ~/wordpress$ sudo -i gedit /etc/my.cnf [mysqld] # socket=/var/lib/mysql/mysql.sock socket=/tmp/mysql.sock [client] socket=/tmp/mysql.sock
- mysqladmin?
$ sudo mysqladmin create wordpress -p [sudo] kouzou のパスワード: Enter password: mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'wordpress'; database exists' 上記のエラーはどうすればエラーが消えますか? どうか、教えてください。 ご回答の程、宜しくお願い申し上げます。
- どうしてエラーになるのですか?
kouzou@GD348ZZD9:/var/www/html$ sudo mysqladmin create wordpress -p [sudo] kouzou のパスワード: Enter password: mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'wordpress'; database exists' kouzou@GD348ZZD9:/var/www/html$ sudo mysqladmin create wordpress -p Enter password: mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'wordpress'; database exists' kouzou@GD348ZZD9:/var/www/html$ sudo mysqladmin create wordpress -p Enter password: mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'wordpress'; database exists'
- どうすればエラーが消えるでしょうか?
MariaDB [(none)]> CREATE USER 'kouzou'@'li*************r.club' IDENTIFIED BY 'rhythmkt0'; ERROR 1396 (HY000): Operation CREATE USER failed for 'kouzou'@'li************r.club'
- [y]を5回ほど入力する画面にならない。
$ mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) $ sudo apt install mysql-server mysql-client パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが自動でインストールされましたが、もう必要とされていません: galera-3 libconfig-inifiles-perl libdbd-mysql-perl libdbi-perl libjemalloc1 libterm-readkey-perl mariadb-common socat これを削除するには 'sudo apt autoremove' を利用してください。 以下の追加パッケージがインストールされます: libevent-core-2.1-6 mysql-client-5.7 mysql-client-core-5.7 mysql-server-5.7 mysql-server-core-5.7 提案パッケージ: mailx tinyca 以下のパッケージは「削除」されます: mariadb-client mariadb-client-10.1 mariadb-client-core-10.1 mariadb-server mariadb-server-10.1 mariadb-server-core-10.1 以下のパッケージが新たにインストールされます: libevent-core-2.1-6 mysql-client mysql-client-5.7 mysql-client-core-5.7 mysql-server mysql-server-5.7 mysql-server-core-5.7 アップグレード: 0 個、新規インストール: 7 個、削除: 6 個、保留: 0 個。 20.4 MB 中 0 B のアーカイブを取得する必要があります。 この操作後に 11.0 MB のディスク容量が解放されます。 続行しますか? [Y/n] y パッケージを事前設定しています ... (データベースを読み込んでいます ... 現在 190376 個のファイルとディレクトリがインストールされています。) mariadb-client (1:10.1.38-0ubuntu0.18.04.1) を削除しています ... mariadb-server (1:10.1.38-0ubuntu0.18.04.1) を削除しています ... mariadb-server-10.1 (1:10.1.38-0ubuntu0.18.04.1) を削除しています ... mariadb-client-10.1 (1:10.1.38-0ubuntu0.18.04.1) を削除しています ... mariadb-client-core-10.1 (1:10.1.38-0ubuntu0.18.04.1) を削除しています ... mariadb-server-core-10.1 (1:10.1.38-0ubuntu0.18.04.1) を削除しています ... 以前に未選択のパッケージ mysql-client-core-5.7 を選択しています。 (データベースを読み込んでいます ... 現在 190107 個のファイルとディレクトリがインストールされています。) .../0-mysql-client-core-5.7_5.7.25-0ubuntu0.18.04.2_amd64.deb を展開する準備をしています ... mysql-client-core-5.7 (5.7.25-0ubuntu0.18.04.2) を展開しています... 以前に未選択のパッケージ mysql-client-5.7 を選択しています。 .../1-mysql-client-5.7_5.7.25-0ubuntu0.18.04.2_amd64.deb を展開する準備をしています ... mysql-client-5.7 (5.7.25-0ubuntu0.18.04.2) を展開しています... 以前に未選択のパッケージ mysql-server-core-5.7 を選択しています。 .../2-mysql-server-core-5.7_5.7.25-0ubuntu0.18.04.2_amd64.deb を展開する準備をしています ... mysql-server-core-5.7 (5.7.25-0ubuntu0.18.04.2) を展開しています... 以前に未選択のパッケージ libevent-core-2.1-6:amd64 を選択しています。 .../3-libevent-core-2.1-6_2.1.8-stable-4build1_amd64.deb を展開する準備をしています ... libevent-core-2.1-6:amd64 (2.1.8-stable-4build1) を展開しています... 以前に未選択のパッケージ mysql-server-5.7 を選択しています。 .../4-mysql-server-5.7_5.7.25-0ubuntu0.18.04.2_amd64.deb を展開する準備をしています ... Downgrade from (at least) 10.1 to 5.7 is not possible. Packaging maintenance of MySQL will stop and the daemon disabled to prevent damage to your system. For help, see /etc/mysql/FROZEN mysql-server-5.7 (5.7.25-0ubuntu0.18.04.2) を展開しています... 以前に未選択のパッケージ mysql-client を選択しています。 .../5-mysql-client_5.7.25-0ubuntu0.18.04.2_all.deb を展開する準備をしています ... mysql-client (5.7.25-0ubuntu0.18.04.2) を展開しています... 以前に未選択のパッケージ mysql-server を選択しています。 .../6-mysql-server_5.7.25-0ubuntu0.18.04.2_all.deb を展開する準備をしています ... mysql-server (5.7.25-0ubuntu0.18.04.2) を展開しています... libevent-core-2.1-6:amd64 (2.1.8-stable-4build1) を設定しています ... ureadahead (0.100.0-20) のトリガを処理しています ... mysql-server-core-5.7 (5.7.25-0ubuntu0.18.04.2) を設定しています ... libc-bin (2.27-3ubuntu1) のトリガを処理しています ... systemd (237-3ubuntu10.12) のトリガを処理しています ... man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ... ubuntu18.04 どうしてこうなるのでしょうか? 宜しくお願い申し上げます。
- PassWordは1つなのに、通りません。
[root@ /]# mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) パスワードが通りません。 どうしてでしょうか? ご多忙中恐れいります。 ご回答の程、宜しくお願い申し上げます。
- sqlite3から取り出したデータにカラム名を付与
Perl CGIを介してsqlite3でデータベースを構築しています。 とりだしたデータを.csvにしてユーザがダウンロードできるようにしたいです。 単にselect * としてcsvを作っても、カラム名のないファイルができます。 一行目がカラム名になっているファイルを作るにはどうすればよいでしょうか? 列数が4つか5つ程度なら、Perlにそれらを固定で書き込んでやればよいのですが、 列数が多くなると(データ構造を変更した際などに)不一致がおきる危険性があります。データベースから直接定義をとりだして、それを利用できればと思うのですが。