前提・実現したいこと
SQLに関する質問です。
GROUP BYした結果をSUMまたはCOUNTで集計したいのですが、解決方法が見つかりません。
該当のデータベース
こちらより引用しています。
https://launchpad.net/test-db/employees-db-1
Terminal
1wget https://launchpad.net/test-db/employees-db-1/1.0.6/+download/employees_db-full-1.0.6.tar.bz2 2tar jxfv employees_db-full-1.0.6.tar.bz2 3cd employees_db 4mysql -h"zdb" -P"3306" -u root -p"gci" < employees.sql
show databases; use employees; Database 0 TEST1 1 TEST2 2 employees 3 information_schema 4 mysql 5 performance_schema 6 world Query OK, 0 rows affected.
show tables; Tables_in_employees 0 departments 1 dept_emp 2 dept_manager 3 employees 4 salaries 5 titles
試したいこと
salalry(給料)の最大が100,000より大きく、かつ最小が90,000以上のemp_noの合計数を出したいのが本来の目的です。
下記のように、まずは条件に合う場合に1,合わない場合に0を出す列を作成しました。
この次SUMやCOUNTを使って集計しようとしたのですが、うまくいきません。
SQL
1select emp_no, 2case when MAX(salary) > 100000 and MIN(salary) >= 90000 then 1 else 0 end as 'ans' 3from salaries 4group by emp_no 5limit 10; 6
#出力結果 +--------+-----+ | emp_no | ans | +--------+-----+ | 10001 | 0 | | 10002 | 0 | | 10003 | 0 | | 10004 | 0 | | 10005 | 0 | | 10006 | 0 | | 10007 | 0 | | 10008 | 0 | | 10009 | 0 | | 10010 | 0 | +--------+-----+ 10 rows in set (0.00 sec)
###使用環境
mysql Ver 8.0.23 for Linux on x86_64 (MySQL Community Server - GPL)
回答4件
あなたの回答
tips
プレビュー