異なる複数のテーブルの件数を、countとサブクエリを使って1つのSQLでカウントできます。 select * from (select count(*) as employees_cnt from employees) a, (select count(*) as departments_cnt from departments) b, (select count(*) as salaries_cnt from salaries) c

なるべく単純な1つのSQLで、すべてのレコード数と、flag=1のレコード数と、flag=0のレコード数を取得せよ。, 1、count(*) は件数を数えるが、count(何々)は非NULL値を数える。 ※MySQLを前提として書いていますまあ前にも似たようなことをやってるんですが 以下のテーブル「table」があるとします。 id a b 1 1 3 2 2 4 3 1 5 4 2 NULL 5 2 NULL ここから、 「aが1であるレコードの数」 「aが2であるレコードの数」 「bが3であるレコードの数」 を取る… SQLにおいて表題のことをやりたかった。 環境. from a. 他にもある!集計関数たち! 重複を回避するには? みなさんこんにちは! flag = 1 のとき → true or null → true

性別と地区が重複しているレコード(no1,3)のみ抜き出したい場合のsqlは GroupByquery select 性別 , 地区 from testTBL group by 性別 , 地区 having count ( 性別 ) > 1 and count ( 地区 ) > 1   → countで数えたいものを非NULL、数えたくないものをNULLにしてしまえばよい。, 2、3値論理 1、count(*) は件数を数えるが、count(何々)は非NULL値を数える。 → countで数えたいものを非NULL、数えたくないものをNULLにしてしまえばよい。 2、3値論理 ,sum(case flag = 1 then 1 else 0 end) as フラグ1のレコード数 今回はsqlの中でも、多用することになるであろう基本命令count関数について見ていきましょう。 countの使い方! flag = 0 のとき → false or null → null, なので、count(flag = 1 or null) で flag = 1 の件数がカウントできる。, ((何か複雑な条件) or null) → 条件がtrueの件数 select ((何か複雑な条件) and null) → 条件がfalseの件数, 問題のテーブルに800万件ほどデータを用意しました。flag の 0/1 はランダムです。, MySQLでは if の実装が優れているのか、3値論理における論理演算のコストが高いのか、if の方が若干速そう。, ★ しつこいですが、count(非NULL)の形にするのがポイントで、そのために ~ or null となっています。. count(*)   → TRUE, FALSE, NULLを使って、数えたいものを非NULL、数えたくないものをNULLにするには?, true, false, null の 三値の and, or 演算の結果を確認。, ((flag = 1) or null) は、 Amazon Athena count() 単純に”count()“の結果を計算するのであれば特に問題なくできるのだが、1つのクエリで複数の”count()“を実行し、その結果を使って四則演算したかった。 グループごとにcountを使おう! ,sum(case flag = 0 then 1 else 0 end) as フラグ0のレコード数