添加:
sql查询:
SELECT s.name
, d.feeling
, COUNT(1) AS times
FROM data_table d
, staff s
WHERE d.nid = s.id
AND d.project_id = 1
AND d.crawl_time BETWEEN '2018-10-17' AND '2018-10-24'
AND LENGTH(TRIM(d.feeling)) > 0
GROUP
BY d.nid
, d.feeling
添加(结束)
我编写了一个sql,通过名字和感觉来查询每个人的感觉组的时间。这是结果。
-- a certain sql returns, not an existing table --
`name` `feeling` `times` (expect)
Jack happy 10 0.45
Jack sad 7 0.31
Jack common 5 0.22
Lily happy 3 0.27
Lily sad 6 0.54
Lily common 2 0.18
Sam happy 6 0.42
Sam sad 7 0.5
Sam common 1 0.07
现在的目的是计算每个人的感受的比率。例如,杰克的幸福感 10/(10+7+5)
他的感情,和悲伤的感觉是 7/(10+7+5)
. 使用时 SUM(result.count)
以及 GROUP BY name
想一想,悲伤或普通的感情是无法表现出来的。然后我使用子查询,但是表不存在。在不创建视图的情况下是否还有其他方法可以工作?
1条答案
按热度按时间x6492ojm1#
有一种解决方案应该适用于任何版本的mysql,它使用子查询来查找
times
对于每个名称,然后加入到其中:如果您使用的是mysql 8+或更高版本,并且可以访问分析函数,那么有一种更简单的编写方法: