質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

3回答

3323閲覧

SQLiteでSUM関数を使う際にWHERE句で重複したものがあると加算されない

rera

総合スコア109

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

1クリップ

投稿2017/10/17 05:36

SELECT SUM(price) FROM menu WHERE menu_id = abc OR menu_id = abc OR menu_id = def
このようなSQL文を叩くと、abc+defのみの結果となってしまい、abcが1つ飛ばされてしまいます。

abc+abc+defのSUMを取得するにはどうしたらいいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

WHEREはあくまでテーブルから必要なものを絞り込むためのものなので、条件の書き方で同じレコードが2回取られることはありません。

いちばんシンプルにやるとすれば、WHERE menu_id = abcWHERE menu_id = defを別に取って、それから計算することになると思います。

投稿2017/10/17 05:46

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rera

2017/10/17 05:58

言われてみれば確かにおっしゃる通りでした... 解決できました。ありがとうございますm(_ _)m
guest

0

abcの場合だけ2倍になるよう調整するとかでしょうか
sqliteで動くかはわかりませんが、普通のSQLなら以下でいけると思います

SQL

1select sum(price*(case menu_id when abc then 2 else 1 end)) 2from menu where menu_id = abc OR menu_id = def

投稿2017/10/17 05:50

yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

結構考えましたけど、こんなのしか思いつかなかったです。悔しいですね。

sqlite> select sum(price) from ...> ( ...> select price from menu where menu_id='abc' union all ...> select price from menu where menu_id='abc' union all ...> select price from menu where menu_id='def' ...> );

投稿2017/10/17 06:00

SugiTK

総合スコア495

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問