質問するログイン新規登録

質問編集履歴

3

sqlの追加

2015/04/28 10:16

投稿

samazama4623
samazama4623

スコア59

title CHANGED
File without changes
body CHANGED
@@ -22,9 +22,44 @@
22
22
  SUM(CASE WHEN come_place='退場' THEN 1 END) AS 退場済み,
23
23
 
24
24
  SUM(1)
25
- FROM qpass_s_come_00001289
25
+ FROM table
26
26
  GROUP BY e_id,to_date(come_date,'yyyy/mm/dd')
27
27
  ORDER BY e_id
28
28
  ```
29
29
  case whenを使いましたが入場中をどのように書けばよいかわかりません
30
- 入場中とは、入場記録があるが同日の退場記録がない状態です
30
+ 入場中とは、入場記録があるが同日の退場記録がない状態です
31
+
32
+ 追記
33
+ いろいろやってみて
34
+ ```lang-sql
35
+ SELECT
36
+ TO_CHAR(to_date,'yyyy/mm/dd') as date
37
+ ,extract(dow from to_date)
38
+ ,(array['(日)','(月)','(火)','(水)','(木)','(金)','(土)'])[extract(dow from to_date) + 1] as days
39
+
40
+ ,SUM(
41
+ SUM(CASE WHEN in1 > 1 AND out1 != 0 THEN 1 END ) + SUM(CASE WHEN out1 > 0 THEN 1 END )
42
+ ) as "総来場組数"
43
+ FROM (
44
+ SELECT
45
+ TO_CHAR(to_date,'yyyy/mm/dd') as date
46
+ ,extract(dow from to_date)
47
+ ,(array['(日)','(月)','(火)','(水)','(木)','(金)','(土)'])[extract(dow from to_date) + 1] as days
48
+ ,SUM(CASE WHEN in1 > 0 THEN 1 END) as "来場済み"
49
+ ,SUM(CASE WHEN out1 > 0 THEN 1 END ) as "退場済み"
50
+ ,SUM(CASE WHEN in1 > 1 AND out1 != 0 THEN 1 END ) as "来場中"
51
+ FROM (
52
+ SELECT e_id,to_date(come_date,'yyyy/mm/dd'),
53
+ SUM(CASE WHEN come_place='来場' THEN 1 ELSE 0 END) AS in1
54
+ ,SUM(CASE WHEN come_place='退場' THEN 1 ELSE 0 END) AS out1
55
+ FROM table
56
+ GROUP BY e_id,to_date(come_date,'yyyy/mm/dd')
57
+ )as t2
58
+ ) as t1
59
+ GROUP BY to_date
60
+ ORDER BY date
61
+ ```
62
+
63
+ ERROR: 列"t2.to_date"はGROUP BY句で出現しなければならないか、集約関数内で使用しなければなりません
64
+ LINE 2: TO_CHAR(to_date,'yyyy/mm/dd') as date
65
+ となります。

2

case whenの詳しい使い方

2015/04/28 10:15

投稿

samazama4623
samazama4623

スコア59

title CHANGED
File without changes
body CHANGED
@@ -15,4 +15,16 @@
15
15
  ORDER BY date
16
16
 
17
17
  ```
18
- 前回作ったのは入退場全部含めて一括で表示していました
18
+ 前回作ったのは入退場全部含めて一括で表示していました
19
+ ```lang-sql
20
+ SELECT e_id,to_date(come_date,'yyyy/mm/dd'),
21
+ SUM(CASE WHEN come_place='入場' THEN 1 END) AS 入場済み,
22
+ SUM(CASE WHEN come_place='退場' THEN 1 END) AS 退場済み,
23
+
24
+ SUM(1)
25
+ FROM qpass_s_come_00001289
26
+ GROUP BY e_id,to_date(come_date,'yyyy/mm/dd')
27
+ ORDER BY e_id
28
+ ```
29
+ case whenを使いましたが入場中をどのように書けばよいかわかりません
30
+ 入場中とは、入場記録があるが同日の退場記録がない状態です

1

sql

2015/04/28 08:08

投稿

samazama4623
samazama4623

スコア59

title CHANGED
File without changes
body CHANGED
@@ -1,3 +1,18 @@
1
1
  テーブルに入場、退場、未のステータスがあるとします。
2
2
  入場済み、入場中、退場済み、総来場組数の件数を出したいのですが
3
- どのようなsqlをつくればよいですか
3
+ どのようなsqlをつくればよいですか
4
+ ```lang-sql
5
+ SELECT TO_CHAR(to_date,'yyyy/mm/dd') as date
6
+ ,extract(dow from to_date)
7
+ ,(array['(日)','(月)','(火)','(水)','(木)','(金)','(土)'])[extract(dow from to_date) + 1] as days
8
+ ,count(*) FROM (
9
+ SELECT e_id,to_date(come_date,'yyyy/mm/dd'),COUNT(*)
10
+ FROM $table_come
11
+ GROUP BY e_id,to_date(come_date,'yyyy/mm/dd')
12
+ ) as t1
13
+
14
+ GROUP BY to_date
15
+ ORDER BY date
16
+
17
+ ```
18
+ 前回作ったのは入退場全部含めて一括で表示していました