【发布时间】:2017-09-14 16:27:11
【问题描述】:
我有question就是这样,已经得到答复。
现在,我有一个新列但同一张表(现在有一个日期)
+------------+----------------+-------------+
| id_kondisi | id_sub_kondisi | tgl_kondisi |
+------------+----------------+-------------+
| 01 | 0102 | 2017-09-13 |
| 03 | 0302 | 2017-09-13 |
| 01 | 0101 | 2017-09-13 |
| 01 | 0102 | 2017-09-13 |
| 01 | 0101 | 2017-09-13 |
| 03 | 0301 | 2017-09-13 |
| 03 | 0303 | 2017-09-13 |
| 02 | 0202 | 2017-09-14 |
| 01 | 0102 | 2017-09-13 |
| 03 | 0301 | 2017-09-13 |
| 01 | 0101 | 2017-09-13 |
| 02 | 0203 | 2017-09-14 |
| 03 | 0302 | 2017-09-13 |
| 02 | 0202 | 2017-09-14 |
| 02 | 0201 | 2017-09-14 |
| 02 | 0202 | 2017-09-14 |
+------------+----------------+-------------+
查询
CREATE TABLE kondisi
(`id_kondisi` int, `id_sub_kondisi` int, `tgl_kondisi` date)
;
INSERT INTO kondisi
(`id_kondisi`, `id_sub_kondisi`, `tgl_kondisi`)
VALUES
(01, 0102, 2017-09-13),
(03, 0302, 2017-09-13),
(01, 0101, 2017-09-13),
(01, 0102, 2017-09-13),
(01, 0101, 2017-09-13),
(03, 0301, 2017-09-13),
(03, 0303, 2017-09-13),
(02, 0202, 2017-09-14),
(01, 0102, 2017-09-13),
(03, 0301, 2017-09-13),
(01, 0101, 2017-09-13),
(02, 0203, 2017-09-14),
(03, 0302, 2017-09-13),
(02, 0202, 2017-09-14),
(02, 0201, 2017-09-14),
(02, 0202, 2017-09-14)
;
如果tgl_kondisi 是2017-09-13,我如何在count_tot 中生成将被循环的id 和包含where 子句的tgl_count1 列中的数量相加。我想要的结果是这样的:
+----------------+-------------+------------+
| kondisi_tot | coun_tot |tgl_count1 |
+----------------+-------------+------------+
| 01 | 6 | 6 |
| 0101 | 3 | 3 |
| 0102 | 3 | 3 |
| 02 | 5 | 0 |
| 0201 | 1 | 0 |
| 0202 | 3 | 0 |
| 0203 | 1 | 0 |
| 03 | 5 | 5 |
| 0301 | 2 | 2 |
| 0302 | 2 | 2 |
| 0303 | 1 | 1 |
+----------------+-------------+------------+
我做过类似的事情,但是没有用
select id, count(id), (select count(id) from kondisi where tgl_kondisi='2017-09-13')
from
(select id_kondisi as id from kondisi
union all
select id_sub_kondisi from kondisi) merged_table
group by id
order by cast(id as char)
【问题讨论】:
-
SELECT id, COUNT(id), SUM(CASE tgl_kondisi='2017-09-13', 1, 0)- 条件聚合. -
对不起。我的错。语法错误。
SELECT id, COUNT(id), SUM(CASE WHEN tgl_kondisi='2017-09-13' THEN 1 ELSE 0 END) -
我应该把
tgl_kondisi放在哪里?它返回Unknown column 'tgl_kondisi' in 'field list' -
您需要在派生的
merged_table中提供它 -
哦,我明白了,它有效!谢谢@PM77-1