監視ソリューション(zabbix)を使用します。 Unixの時間を使用してSQLクエリ - ハードコードされた値を置換...(MySQL)
itemid clock value_avg
1 1238774400 100
1 1250773900 70
1 1250773200 50
クロックフィールド格納日時値:これは傾向(簡体字)以下の構造を有するtrends_uintと呼ばれるテーブルを使用してデータ(MySQLの5.X)を格納します。
私は、監視対象の消費量を見るためにレポートを抽出しようとしています。最も古いレコードと最新のレコードを選択してこれを行うと思った。私は次のことを達成しました:
SELECT
(SELECT t.clock FROM trends_uint t WHERE t.itemid = 1 AND t.clock IN (SELECT MIN(t.clock) FROM trends_uint t WHERE t.itemid = 1)) AS minClock,
(SELECT t.value_avg FROM trends_uint t WHERE t.itemid = 1 AND t.clock IN (SELECT MIN(t.clock) FROM trends_uint t WHERE t.itemid = 1)) AS minValueAvg,
(SELECT t.clock FROM trends_uint t WHERE t.itemid = 1 AND t.clock IN (SELECT MAX(t.clock) FROM trends_uint t WHERE t.itemid = 1)) AS maxClock,
(SELECT t.value_avg FROM trends_uint t WHERE t.itemid = 1 AND t.clock IN (SELECT MAX(t.clock) FROM trends_uint t WHERE t.itemid = 1)) AS maxValueAvg,
(SELECT maxClock - minClock) AS timeGap,
(SELECT minValueAvg - maxValueAvg) AS valueGap,
(SELECT timeGap/86400) AS daysGap,
(SELECT valueGap/daysGap/1024/1024) AS consumeMB
私の問題は、消費量を計算したいロットのサーバーがあることです。私はどちらが1つ(itemidを変更する)のクエリを変更したくないです。
システムには、レポートに入れる必要があるアイテムを抽出するための別のテーブル(アイテム)があります。 SELECT itemid FROM items WHERE ...
のようなものは、これが私の質問です:代わりにハードコードされたアイテムIDを使用しての、それは別のクエリ(例:SELECT ... FROM ... WHERE itemid IN (SELECT itemid FROM items WHERE ...
)から返されるコードを使用して、インスタンスのために、それは「ダイナミック」にすることができますか?
TIA、
ボブ
感謝です。私は「wasn私はMySQLの機能(可能であれば純粋なSQLクエリに優先)を使用してそれを達成しようとしています。私はユーザ定義の変数について研究します。 –