我有下表:
trade_id position_id exit_date
34 1
35 1 2016-01-02
36 2 2016-02-07
37 2 2016-02-06
38 3
39 3
我需要按position_id
进行分组,并且只选择该群组中每个trade_id都填充了exit_date
的位置。换句话说,每个trade_id
中的每个position_id
小组必须有exit_date
才能被选中。
在上表中,只有一个限定组,即:position_id = 2
我尝试了以下内容:
select position_id from trades
where exit_date is not null
group by position_id
但是,即使只有一个交易中有一个exit_date,也会选择仓位。我只需要有所有exit_dates已填入的仓位
答案 0 :(得分:2)
不应使用 private func setup() {
//Overhangs the view slightly to avoid invalid constraints.
self.clipsToBounds = true
self.backgroundView = nil
self.backgroundColor = nil
self.tintColor = nil
self.selectionStyle = .None
//no need of setting the frame of button hear
//at the time initialisation there is no frame available for cell
//button.frame = CGRectMake((self.frame.width - 134)/2, 0, 134, 44)
button.tintColor = nil
button.backgroundColor = nil
button.setImage(buttonImage, forState: .Normal)
self.contentView.addSubview(button)
}
//set it hear because frame of the cell available hear
override func layoutSubviews() {
super.layoutSubviews()
button.frame = CGRectMake((self.frame.width - 134)/2, 0, 134, 44)
}
,而应将WHERE
与HAVING
一起使用,如下所示:
COUNT
SELECT position_id
FROM trades
GROUP BY position_id
HAVING COUNT(*)=COUNT(exit_date)
计算所有行,而COUNT(*)
计算COUNT(exit_date)
列中非NULL
值的行。因此,exit_date
仅保留HAVING
,这两个计数彼此相等。