質問編集履歴

3

sqlの追加

2015/04/28 10:16

投稿

samazama4623
samazama4623

スコア59

test CHANGED
File without changes
test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
  SUM(1)
48
48
 
49
- FROM qpass_s_come_00001289
49
+ FROM table
50
50
 
51
51
  GROUP BY e_id,to_date(come_date,'yyyy/mm/dd')
52
52
 
@@ -57,3 +57,73 @@
57
57
  case whenを使いましたが入場中をどのように書けばよいかわかりません
58
58
 
59
59
  入場中とは、入場記録があるが同日の退場記録がない状態です
60
+
61
+
62
+
63
+ 追記
64
+
65
+ いろいろやってみて
66
+
67
+ ```lang-sql
68
+
69
+ SELECT
70
+
71
+ TO_CHAR(to_date,'yyyy/mm/dd') as date
72
+
73
+ ,extract(dow from to_date)
74
+
75
+ ,(array['(日)','(月)','(火)','(水)','(木)','(金)','(土)'])[extract(dow from to_date) + 1] as days
76
+
77
+
78
+
79
+ ,SUM(
80
+
81
+ SUM(CASE WHEN in1 > 1 AND out1 != 0 THEN 1 END ) + SUM(CASE WHEN out1 > 0 THEN 1 END )
82
+
83
+ ) as "総来場組数"
84
+
85
+ FROM (
86
+
87
+ SELECT
88
+
89
+ TO_CHAR(to_date,'yyyy/mm/dd') as date
90
+
91
+ ,extract(dow from to_date)
92
+
93
+ ,(array['(日)','(月)','(火)','(水)','(木)','(金)','(土)'])[extract(dow from to_date) + 1] as days
94
+
95
+ ,SUM(CASE WHEN in1 > 0 THEN 1 END) as "来場済み"
96
+
97
+ ,SUM(CASE WHEN out1 > 0 THEN 1 END ) as "退場済み"
98
+
99
+ ,SUM(CASE WHEN in1 > 1 AND out1 != 0 THEN 1 END ) as "来場中"
100
+
101
+ FROM (
102
+
103
+ SELECT e_id,to_date(come_date,'yyyy/mm/dd'),
104
+
105
+ SUM(CASE WHEN come_place='来場' THEN 1 ELSE 0 END) AS in1
106
+
107
+ ,SUM(CASE WHEN come_place='退場' THEN 1 ELSE 0 END) AS out1
108
+
109
+ FROM table
110
+
111
+ GROUP BY e_id,to_date(come_date,'yyyy/mm/dd')
112
+
113
+ )as t2
114
+
115
+ ) as t1
116
+
117
+ GROUP BY to_date
118
+
119
+ ORDER BY date
120
+
121
+ ```
122
+
123
+
124
+
125
+ ERROR: 列"t2.to_date"はGROUP BY句で出現しなければならないか、集約関数内で使用しなければなりません
126
+
127
+ LINE 2: TO_CHAR(to_date,'yyyy/mm/dd') as date
128
+
129
+ となります。

2

case whenの詳しい使い方

2015/04/28 10:15

投稿

samazama4623
samazama4623

スコア59

test CHANGED
File without changes
test CHANGED
@@ -33,3 +33,27 @@
33
33
  ```
34
34
 
35
35
  前回作ったのは入退場全部含めて一括で表示していました
36
+
37
+ ```lang-sql
38
+
39
+ SELECT e_id,to_date(come_date,'yyyy/mm/dd'),
40
+
41
+ SUM(CASE WHEN come_place='入場' THEN 1 END) AS 入場済み,
42
+
43
+ SUM(CASE WHEN come_place='退場' THEN 1 END) AS 退場済み,
44
+
45
+
46
+
47
+ SUM(1)
48
+
49
+ FROM qpass_s_come_00001289
50
+
51
+ GROUP BY e_id,to_date(come_date,'yyyy/mm/dd')
52
+
53
+ ORDER BY e_id
54
+
55
+ ```
56
+
57
+ case whenを使いましたが入場中をどのように書けばよいかわかりません
58
+
59
+ 入場中とは、入場記録があるが同日の退場記録がない状態です

1

sql

2015/04/28 08:08

投稿

samazama4623
samazama4623

スコア59

test CHANGED
File without changes
test CHANGED
@@ -3,3 +3,33 @@
3
3
  入場済み、入場中、退場済み、総来場組数の件数を出したいのですが
4
4
 
5
5
  どのようなsqlをつくればよいですか
6
+
7
+ ```lang-sql
8
+
9
+ SELECT TO_CHAR(to_date,'yyyy/mm/dd') as date
10
+
11
+ ,extract(dow from to_date)
12
+
13
+ ,(array['(日)','(月)','(火)','(水)','(木)','(金)','(土)'])[extract(dow from to_date) + 1] as days
14
+
15
+ ,count(*) FROM (
16
+
17
+ SELECT e_id,to_date(come_date,'yyyy/mm/dd'),COUNT(*)
18
+
19
+ FROM $table_come
20
+
21
+ GROUP BY e_id,to_date(come_date,'yyyy/mm/dd')
22
+
23
+ ) as t1
24
+
25
+
26
+
27
+ GROUP BY to_date
28
+
29
+ ORDER BY date
30
+
31
+
32
+
33
+ ```
34
+
35
+ 前回作ったのは入退場全部含めて一括で表示していました