我有一张人口表,我希望在两年内比较人口。
我的桌子结构:
id(自动增量),类型(男人,女人,孩子),人口(1到10000),日期
我想在查询下运行两个并显示到一个表结果中:
query1:
SELECT type,count(population) as count_of_year1
FROM population
where date between '2013-01-01' and '2013-01-24'
GROUP BY type
QUERY2:
SELECT type, count(population) as count_of_year2
FROM population
where date between '2014-01-01' and '2014-01-24'
GROUP BY type
我需要这个结果:
|输入| 2013年人口| 2014年的人口
怎么做?
答案 0 :(得分:0)
使用SELECT type,
count(case when date between '2013-01-01' and '2013-01-24' then population end) as count_of_year1,
count(case when date between '2014-01-01' and '2014-01-24' then population end) as count_of_year2
FROM population
GROUP BY type
表达式进行条件计数:
where
添加此where date between '2013-01-01' and '2013-01-24'
or date between '2014-01-01' and '2014-01-24'
子句以加快速度:
class ViewController: UIViewController, AFDXDetectorDelegate {
var detector : AFDXDetector? = nil
override func viewDidLoad() {
super.viewDidLoad()
// create the detector
detector = AFDXDetector(delegate:self, usingCamera:AFDX_CAMERA_FRONT, maximumFaces:1)
detector?.setDetectEmojis(true)
detector!.start()
}
func detectorDidStartDetectingFace(face : AFDXFace) {
// handle new face
}
func detectorDidStopDetectingFace(face : AFDXFace) {
// handle loss of existing face
}
func detector(detector : AFDXDetector, hasResults : NSMutableDictionary?, forImage : UIImage, atTime : NSTimeInterval) {
// handle processed and unprocessed images here
if hasResults != nil {
// handle processed image in this block of code
// enumrate the dictionary of faces
for (_, face) in hasResults! {
// for each face, get the rage score and print it
let emoji : AFDXEmoji = face.emojis
let rageScore = emoji.rage
print(rageScore)
}
} else {
// handle unprocessed image in this block of code
}
}
答案 1 :(得分:0)
由于种群的值可以是1到10000,我假设你想要SUM(),而不是COUNT()。
我有一个单独的表类型:
然后我更喜欢在这里使用JOIN:
SELECT pt.title type,
COALESCE(y1.total_population,0) population_2013,
COALESCE(y2.total_population,0) population_2014
FROM population_type pt
LEFT JOIN (
SELECT type_id,
SUM(population) total_population,
FROM population
WHERE date >= '2013-01-01'
AND date < '2013-01-24' + INTERVAL 1 DAY
GROUP BY type
) y1
ON y1.type_id = pt.id
LEFT JOIN (
SELECT type_id,
SUM(population) total_population,
FROM population
WHERE date >= '2014-01-01'
AND date < '2014-01-24' + INTERVAL 1 DAY
GROUP BY type
) y2
ON y2.type_id = pt.id
这样,您每次只需要总结您需要的内容,并且查询更加模块化。