0
得到表的統計數據,我有以下表結構:算法/查詢使用PHP/MySQL的
CREATE TABLE test(
myID INT,
num1 INT,
num2 INT,
num3 INT,
PRIMARY KEY (myID)
)engine=innodb;
現在我已經在表中的以下數據:
myID num1 num2 num3
1 15 27 98
2 27 38 66
3 15 27 77
現在我需要運行2個查詢,第一個查詢運行選擇所有數字,在PHP端我計算每個數字出現的次數(頻率),第二個查詢應選擇第二個最頻繁的數字。 第一查詢:
$numfreq = PDO->prepare('
SELECT num1, num2, num3
FROM test
');
$numfreq->execute();
$allNums = array();
while ($row = $numfreq->fetch(PDO::FETCH_ASSOC)) {
$allNums[] = intval($row['num1']);
$allNums[] = intval($row['num2']);
$allNums[] = intval($row['num3']);
}
$numFrequencies = array_count_values($allNums);
arsort($numFrequencies);
這個正確返回從表中的每個數的頻率。現在的第二部分
這是我需要幫助:
我得到的最頻繁的出現在這種情況下,數量及其,因爲它的頻率是,我需要選擇1號碼出現最接近意味着我需要得到某種數字因爲它出現兩次旁邊。
我大概可以算出PHP方面的算法,但我想知道是否有可能使用查詢做到這一點?
所以最終的結果將是:
most frequent number: 27
most frequent number 27 combined with 15 appears 2 times and is most frequent combination.
你能解釋與聯盟的內部查詢部分? – GGio 2013-02-18 22:09:04