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

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

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

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

Q&A

解決済

3回答

211閲覧

sqlに関してです、

sfjkdscj

総合スコア7

MySQL

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

0グッド

0クリップ

投稿2017/08/01 07:38

編集2017/08/01 07:39

SUM(CASE WHEN test>=0 && test<=100000 THEN test ELSE 0 END) AS total,
SUM(CASE WHEN test>100000 && test<200000 THEN test ELSE 0 END) AS a_total,
SUM(CASE WHEN test>200000 && test<300000 THEN test ELSE 0 END) AS i_total,

case文に関して分からないとこがありまして
50万~
40万~50万
30万~40万
20万~30万
10万~20万
00万~10万
こんな感じでテーブルにしたいのですがどうしたらいいでしょうか?

SUM(CASE WHEN test>300000 && test<400000 THEN test ELSE 0 END) AS u__total,
SUM(CASE WHEN test>400000 && test<500000 THEN test ELSE 0 END) AS e_total,
SUM(CASE WHEN test>500000 THEN test ELSE 0 END) AS o__total

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

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

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

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

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

m.ts10806

2017/08/01 08:13 編集

プログラムコードは```で囲ってください。(わからなければ質問編集画面でコード部分を選択し<code>ボタンを押してください) また、このタイトルだけだとSQLのどこに問題・課題があるのか分かりづらいので適切なタイトルに修正してください。 https://teratail.com/help/question-tips#questionTips3-1
guest

回答3

0

ベストアンサー

10万単位での件数を取得ということで、100,000で割った商でグルーピングして、件数をカウント。

SQL

1select floor(test / 1000000) as series, count(*) as total 2from table1 3group by floor(test / 1000000)

投稿2017/08/01 10:46

sazi

総合スコア25173

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

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

0

こういうこと?

sql

1select A.label, count(A.test) as total 2from (select label, test ( 3case 4when test >= 50 then '50' 5when test >= 40 then '40' 6when test >= 30 then '30' 7when test >= 20 then '20' 8when test >= 10 then '10' 9when test >= 00 then '00' 10end) as label 11from target) A 12group by A.label

| label | total |
| 50 | 123 |
| 40 | 456 |
| 30 | 246 |

投稿2017/08/01 08:28

編集2017/08/01 09:00
Tak1016

総合スコア1408

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

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

sfjkdscj

2017/08/01 08:34

testというカラムで testの中の 0~10万までの人の合計 10万から20万までの人の合計 という形で出したいです
Tak1016

2017/08/01 09:00

sumをcountにすればよいのでは?
Tak1016

2017/08/01 09:01

最初のsql修正しました。
sfjkdscj

2017/08/01 10:07

この形です!
guest

0

ちょっとありえない集計ですが、
testの値で場合分けをしてそのtestの値の合計をとるんですか?
普通はtest1の値で合計してtest2の値の合計をとるのでは?

一応命題のとおりにやるなら、集計用の別テーブルを作ります

create table tbl(test int); insert into tbl values(1),(10),(20),(30),(100),(101),(110),(300),(320),(350); create table summary(id int,name varchar(30),min int,max int); insert into summary values(1,'001-100',1,100),(2,'101-200',101,200),(3,'201-300',201,300),(4,'301-400',301,400),(5,'401-500',401,500);

その上で集計

select name,sum(test) as total from summary as t1 left join tbl as t2 on t2.test between t1.min and t1.max group by name

投稿2017/08/01 08:18

yambejp

総合スコア114779

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問