CREATE TABLE IF NOT EXISTS `un_tr` (
`ut_id` int(11) NOT NULL AUTO_INCREMENT,
`date` date DEFAULT NULL,
`s_p_c` double NOT NULL,
`d_c` double NOT NULL,
`tr_id` int(11) DEFAULT NULL,
`ev_t` varchar(50) DEFAULT NULL,
PRIMARY KEY (`ut_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
INSERT INTO `un_tr` (`ut_id`, `date`,
`s_p_c`, `d_c`, `tr_id`, `ev_type`) VALUES
(1, '2018-06-01', 20.33333, 21.33333, 1, 'accident', NULL),
(2, '2018-07-02', 21.33333, 23.33333, 1, 'accident', NULL),
(3, '2018-06-03', 21.33333, 24.33333, 1, 'accident', NULL),
(4, '2018-06-04', 25.33333, 26.33333, 1, 'travel', NULL),
(5, '2018-06-04', 21.33333, 26.33333, 2, 'travel', NULL),
(6, '2018-06-04', 21.33333, 26.33333, 2, 'accident', NULL),
(7, '2018-06-04', 21.33333, 26.33333, 2, 'travel', NULL),
(8, '2018-06-04', 21.33333, 26.33333, 3, 'travel', NULL),
(9, '2018-08-04', 19.33333, 26.33333, 4, 'travel', NULL);
我只需要一个记录计数(ut.tr_id)
select count(distinct ut.tr_id) as count_tr from un_tr ut group by ut.tr_id having count(ut.ut_id)>1
但我得到了结果:
count_tr
1
1
我想得到结果:
count_tr
2
您想给我建议吗,我该怎么做? 感谢。
答案 0 :(得分:2)
您查询
select count(distinct ut.tr_id) as count_tr
from un_tr ut
group by ut.tr_id
having count(ut.ut_id)>1
可以简化为
select ut.tr_id
from un_tr ut
group by ut.tr_id
having count(ut.ut_id)>1
因为count(distinct ut.tr_id)
没有意义:group by ut.tr_id
因此此计数始终每ut.tr_id
。
您现在可以通过以下方式计算不同tr_id
次出现次数:
select count(*)
from
(
select ut.tr_id
from un_tr ut
group by ut.tr_id
having count(ut.ut_id)>1
) as t
答案 1 :(得分:1)
您可以尝试此查询:
select count(*) as count_tr from (
select distinct tr_id as dtr_id, count(ut_id)
from un_tr
group by dtr_id
having count(ut_id) > 1
) a;
结果:
+----------+
| count_tr |
+----------+
| 2 |
+----------+