use*_*897 1 mysql sql group-by union-all
我使用union all合并了两个表.但是,生成的数据有重复.有没有办法加入重复?
例如,所得到的表后的工会所有,t看起来就像这样":
__DAY__.....................__COUNT__
monday....................1
tuesday...................2
tuesday...................3
wednesday..............4
wednesday..............1
wednesday..............5
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样:
__DAY__.................__COUNT__
monday....................1
tuesday....................5
wednesday..............10
Run Code Online (Sandbox Code Playgroud)
此外,我试过"按t.day,t.count分组",但它不起作用.而"...."仅用于格式化目的,以便进行某种缩进.
查询如下.
SELECT t1.hour, t1.day, t1.count
FROM
(
(SELECT hour(time(FROM_UNIXTIME( timecode))) AS hour,
date(FROM_UNIXTIME( timecode)) AS day,
(FROM_UNIXTIME( timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
WHERE hour(time(FROM_UNIXTIME( timecode)))>=14
GROUP BY DAY)
union all
(SELECT hour(time(FROM_UNIXTIME( timecode))) as hour,
date(FROM_UNIXTIME( timecode-86400) ) AS day,
(FROM_UNIXTIME( timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
WHERE hour(time(FROM_UNIXTIME( timecode)))< 14
GROUP BY DAY)
) t1
GROUP BY t1.day, t1.count
HAVING COUNT(*)>0
ORDER BY t1.day
Run Code Online (Sandbox Code Playgroud)
试试这个简单的查询:
SELECT day,sum(count) FROM Table1
Group by day
Run Code Online (Sandbox Code Playgroud)
编辑:为您的查询尝试这个:
SELECT t1.hour, t1.day, sum(t1.count)
FROM
(
(SELECT hour(time(FROM_UNIXTIME( timecode))) AS hour,
date(FROM_UNIXTIME( timecode)) AS day,
(FROM_UNIXTIME( timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
WHERE hour(time(FROM_UNIXTIME( timecode)))>=14
GROUP BY DAY)
union all
(SELECT hour(time(FROM_UNIXTIME( timecode))) as hour,
date(FROM_UNIXTIME( timecode-86400) ) AS day,
(FROM_UNIXTIME( timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
WHERE hour(time(FROM_UNIXTIME( timecode)))< 14
GROUP BY DAY)
) t1
GROUP BY t1.day
HAVING COUNT(*)>0
ORDER BY t1.day
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
710 次 |
| 最近记录: |