Recentemente ho creato una query che viene compilata correttamente e restituisce il risultato desiderato. Quando ho usato quel pezzo di codice come sottoquery in un altro pezzo di codice che un utente su StackOverflow ha inventato per me, ho riscontrato alcuni problemi, che alla fine sono stati risolti. Ho provato a usare questa query come sottoquery in quel pezzo di codice che mi è stato dato. Tuttavia, sql fiddle non restituisce nulla. Nessun errore o messaggio compilato. Quando ho provato a inserire un errore di sintassi di proposito, come un segno + casuale, non è successo nulla. è perché la query è troppo lunga?c'è un limite a ciò che può gestire sql fiddle? sql fiddle non compila nulla e non restituisce messaggi di errore
schema
CREATE TABLE sampleData
(
id MEDIUMINT NOT NULL AUTO_INCREMENT,
timecode int,
count int,
PRIMARY KEY (id)
)
#ENGINE=MyISAM
;
INSERT INTO sampleData
(timecode, count)
VALUES
(1344893440, 1), (1346014720, 1),(1344898688,1),(1345654784,1),(1345978368,1),
(1345959296,1), (1345064704,1), (1345156352,1),(1345225600,1),
(1345017984,1),(1345640960,1),(1346019968,1),(1345834752,1),
(1345438464,1),(1344986880,1),(1345045632,1),(1345557888,1),(1344973056,1),(1345087232,1),(1345433216,1),(1345691008,1),
(1344917760,1),(1345253248,1),(1344934912,1),(1345890048,1),(1345272448,1), (1345829504,1),(1345798400,1),(1345203200,1),(1344741120,1),
(1345175552,1),(1344824192,1),(1344926336,1),(1345571712,1),(1344931584,1),(1345211776,1),(1345059456,1),(1345516288,1),(1345441920,1),(1346009472,1)
interrogazione
select t_0.*,
(coalesce(t_3.average_number_of_votes_per_previous_period_days, 0) - coalesce(t_4.average_number_of_votes_per_previous_period_days, 0)) * 100.0
from
(select t.*,
(coalesce(t_1.count, 0) - coalesce(t_2.count, 0)) * 100.0 as "percentage increase in count in %"
from
(
SELECT sum(1) AS ordr,
t1.id,t1.day, t1.count, SUM(t2.count) as aggregate, (SUM(t2.count)-t1.count)/(sum(1)-1) as "average_number_of_votes_per_previous_period_days"
FROM
(SELECT id, date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t1
INNER JOIN
(SELECT date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t2
on t1.day >= t2.day
GROUP BY t1.day, t1.count
ORDER BY t1.day
)t
left outer join
(
SELECT sum(1) AS ordr,
t1.id,t1.day, t1.count, SUM(t2.count) as aggregate, (SUM(t2.count)-t1.count)/(sum(1)-1) as "average_number_of_votes_per_previous_period_days"
FROM
(SELECT id, date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t1
INNER JOIN
(SELECT date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t2
on t1.day >= t2.day
GROUP BY t1.day, t1.count
ORDER BY t1.day
)t_1
on t.ordr = t_1.ordr + 1 left outer join
(
SELECT sum(1) AS ordr,
t1.id,t1.day, t1.count, SUM(t2.count) as aggregate, (SUM(t2.count)-t1.count)/(sum(1)-1) as "average_number_of_votes_per_previous_period_days"
FROM
(SELECT id, date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t1
INNER JOIN
(SELECT date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t2
on t1.day >= t2.day
GROUP BY t1.day, t1.count
ORDER BY t1.day
) t_2
on t.ordr = t_2.ordr + 2)t_0
left outer join
(select t.*,
(coalesce(t_1.count, 0) - coalesce(t_2.count, 0)) * 100.0 as "percentage increase in count in %"
from
(
SELECT sum(1) AS ordr,
t1.id,t1.day, t1.count, SUM(t2.count) as aggregate, (SUM(t2.count)-t1.count)/(sum(1)-1) as "average_number_of_votes_per_previous_period_days"
FROM
(SELECT id, date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t1
INNER JOIN
(SELECT date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t2
on t1.day >= t2.day
GROUP BY t1.day, t1.count
ORDER BY t1.day
)t
left outer join
(
SELECT sum(1) AS ordr,
t1.id,t1.day, t1.count, SUM(t2.count) as aggregate, (SUM(t2.count)-t1.count)/(sum(1)-1) as "average_number_of_votes_per_previous_period_days"
FROM
(SELECT id, date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t1
INNER JOIN
(SELECT date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t2
on t1.day >= t2.day
GROUP BY t1.day, t1.count
ORDER BY t1.day
)t_1
on t.ordr = t_1.ordr + 1 left outer join
(
SELECT sum(1) AS ordr,
t1.id,t1.day, t1.count, SUM(t2.count) as aggregate, (SUM(t2.count)-t1.count)/(sum(1)-1) as "average_number_of_votes_per_previous_period_days"
FROM
(SELECT id, date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t1
INNER JOIN
(SELECT date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t2
on t1.day >= t2.day
GROUP BY t1.day, t1.count
ORDER BY t1.day
) t_2
on t.ordr = t_2.ordr + 2) t_3
on t.ordr = t_3.ordr + 1
left outer join
(select t.*,
(coalesce(t_1.count, 0) - coalesce(t_2.count, 0)) * 100.0 as "percentage increase in count in %"
from
(
SELECT sum(1) AS ordr,
t1.id,t1.day, t1.count, SUM(t2.count) as aggregate, (SUM(t2.count)-t1.count)/(sum(1)-1) as "average_number_of_votes_per_previous_period_days"
FROM
(SELECT id, date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t1
INNER JOIN
(SELECT date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t2
on t1.day >= t2.day
GROUP BY t1.day, t1.count
ORDER BY t1.day
)t
left outer join
(
SELECT sum(1) AS ordr,
t1.id,t1.day, t1.count, SUM(t2.count) as aggregate, (SUM(t2.count)-t1.count)/(sum(1)-1) as "average_number_of_votes_per_previous_period_days"
FROM
(SELECT id, date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t1
INNER JOIN
(SELECT date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t2
on t1.day >= t2.day
GROUP BY t1.day, t1.count
ORDER BY t1.day
)t_1
on t.ordr = t_1.ordr + 1 left outer join
(
SELECT sum(1) AS ordr,
t1.id,t1.day, t1.count, SUM(t2.count) as aggregate, (SUM(t2.count)-t1.count)/(sum(1)-1) as "average_number_of_votes_per_previous_period_days"
FROM
(SELECT id, date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t1
INNER JOIN
(SELECT date(FROM_UNIXTIME(timecode)) AS day,(FROM_UNIXTIME(timecode)) AS original, COUNT(1) as 'count'
FROM sampleData
GROUP BY DAY) t2
on t1.day >= t2.day
GROUP BY t1.day, t1.count
ORDER BY t1.day
) t_2
on t.ordr = t_2.ordr + 2) t_4
on t_0.ordr = t_4.ordr + 2
L'aggiunta della query alla tua domanda può essere d'aiuto. L'esempio di SQLFiddle potrebbe aiutare ancora di più. Il problema –
è che sql fiddle non viene compilato. quindi non ho un link alla query. ma posterò la query. è davvero lungo però – user1569897
Forse dovresti includere anche la tabella di creazione + le istruzioni di inserimento. (Soprattutto perché il creatore di SQLFiddle, Jake Feasel, troverà probabilmente questa domanda.) A proposito, la tua query funziona sotto ad esempio phpMyAdmin? – biziclop