我对以下声明提出了疑问:
select mood, count(*) * 100/ (select count(*) from entry)from entry group by mood having data>data-30 order by mood asc 语气是从0到2的整数。
产出如下:
mood count
0 96,55
1 3,44有没有一种方法可以将一行添加到“心情2”计数为0?
发布于 2014-04-23 10:59:05
SELECT MOOD, SUM (COUNTER) TOTAL
FROM ( SELECT 0 MOOD, 0 COUNTER FROM DUAL
UNION ALL
SELECT 1 MOOD, 0 COUNTER FROM DUAL
UNION ALL
SELECT 2 MOOD, 0 COUNTER FROM DUAL
UNION ALL
SELECT MOOD, COUNT ( * )
* 100.0
/ (SELECT COUNT ( * )
FROM ENTRY
WHERE DATA > DATE ('now') - 30)
FROM (SELECT *
FROM ENTRY
WHERE DATA > DATE ('now') - 30)
GROUP BY MOOD, DATA)
GROUP BY MOOD
ORDER BY MOOD ASC;您必须枚举(0,1,2,.)所有可能的数字,关联一个计数器= 0。然后,按情绪对计数器进行汇总。
请注意,你的条件有数据>数据-30是荒谬的。例如,您必须从条目中选择满足条件数据>日期(‘now’)- 30的所有记录。
SQLite:名为" dual“的视图与Oracle "dual”表的工作方式相同,可以创建如下所示:“created SELECT 'x‘作为虚拟;”
https://stackoverflow.com/questions/23240548
复制相似问题