我希望能夠選擇Somedata_A和Somedata_B列中的數據與其列中前一行的數據更改的次數。我試過使用DISTINCT
,它在一定程度上起作用。 {1,2,3,2,1,1}
將顯示3,當我想讓它顯示4路線時,有5個不同的值按順序排列。在列內出現不同的計數
實施例:
A,B,C,D,E,F
{1,2,3,2,1,1}
A
比較B
給出的差,B
比較C
給出的差。 。 。 E
與F
相比沒有差別。總而言之,它在一組6個值內給出了4個差異。
我已經得到DISTINCT
工作,但它並沒有真正爲我做伎倆。爲了增加更多的問題,我對整個範圍並不感興趣,可以說每個標題只有2個最後的日期/條目。
其次,我關心性能問題。我在下面的一組實際數據上嘗試了查詢,並且可能由於超時而中斷。
MySQL的32年5月5日架構設置:
CREATE TABLE testdata(
Title varchar(10),
Date varchar(10),
Somedata_A int(5),
Somedata_B int(5));
INSERT INTO testdata (Title, Date, Somedata_A, Somedata_B) VALUES
("Alpha", '123', 1, 2),
("Alpha", '234', 2, 2),
("Alpha", '345', 1, 2),
("Alpha", '349', 1, 2),
("Alpha", '456', 1, 2),
("Omega", '123', 1, 1),
("Omega", '234', 2, 2),
("Omega", '345', 3, 3),
("Omega", '349', 4, 3),
("Omega", '456', 5, 4),
("Delta", '123', 1, 1),
("Delta", '234', 2, 2),
("Delta", '345', 1, 3),
("Delta", '349', 2, 3),
("Delta", '456', 1, 4);
查詢1:
SELECT t.Title, (SELECT COUNT(DISTINCT Somedata_A) FROM testdata AS tt WHERE t.Title = tt.Title) AS A,
(SELECT COUNT(DISTINCT Somedata_B) FROM testdata AS tt WHERE t.Title = tt.Title) AS B
FROM testdata AS t
GROUP BY t.Title
| TITLE | A | B |
|-------|---|---|
| Alpha | 2 | 1 |
| Delta | 2 | 4 |
| Omega | 5 | 4 |
你說得對。更正了錯誤。 – Skjaar
連續的記錄是否像你的例子一樣相隔1天? (如果你總是可以加入下面的連續記錄,答案會變得更加容易) – AgRizzo
那麼,記錄將永遠是一個新的身份識別碼,因此就像他們相隔1天一樣。 – Skjaar