Gegeben: Ich habe eine Quelltabelle, die verschiedene Attribute für Schuhe in mehreren booleschen Feldern enthält, die angeben, ob die Schuhe für dieses Attribut verfügbar sind. 1=Verfügbar, 0=Nicht verfügbar. Beispieldaten sind wie folgt -
Prod_id | s_7 | s_8 | s_9 | s_10 | c_white | c_black | c_blue | c_brown | c_other | t_shoes | T_Sandalen | t_pantoffeln | ... |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
001 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | ... |
002 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | ... |
003 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | ... |
004 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | ... |
005 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | ... |
006 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | ... |
007 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | ... |
008 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | ... |
009 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | ... |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
Es gibt auch einige Attributspalten wie o_casual, o_formal, o_ethnic, m_canvas, m_leather, m_silicon, p_plain, p_textured, p_funky usw., und alle Attributspalten haben Binärwerte ihrer jeweiligen prod_id. Es gibt über 50.000 prod_ids.
Fragen Sie: Ich benötige eine rotierte Verteilung der Verfügbarkeit jedes Attributpaars und der Zellenwert sollte die Anzahl der prod_id für ein bestimmtes Paar am Schnittpunkt angeben. Beispielsweise hat eine prod_id mit den Attributen „s_8“ und „c_black“ eine Anzahl von 4 (wobei s_8=1 und c_black=1). Es sollte in der Ansicht unten erscheinen, was für die weitere Analyse nützlich sein kann.
Eigenschaften | s_7 | s_8 | s_9 | s_10 | c_white | c_black | c_blue | c_brown | c_other | t_shoes | T_Sandalen | t_pantoffeln | ... |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
s_7 | 3 | 2 | 2 | 0 | 2 | 1 | 3 | 0 | 1 | 0 | 1 | 2 | ... |
s_8 | 2 | 6 | 4 | 2 | 2 | 4 | 3 | 3 | 4 | 3 | 1 | 2 | ... |
s_9 | 2 | 4 | 7 | 3 | 2 | 5 | 4 | 3 | 4 | 3 | 2 | 3 | ... |
s_10 | 0 | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
c_white | 2 | ... | ... | ||||||||||
c_black | 1 | ... | ... | ||||||||||
c_blue | 3 | ... | ... | ||||||||||
c_brown | 0 | ... | ... | ||||||||||
c_other | 1 | ... | ... | ||||||||||
t_shoes | 0 | ... | ... | ||||||||||
T_Sandalen | 1 | ... | ... | ||||||||||
t_pantoffeln | 2 | ... | ... | ||||||||||
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
Intuitiv wird die Ausgabetabelle über die Diagonale gespiegelt und die diagonalen Zellen enthalten die Gesamtzahl der prod_ids für dieses bestimmte Attribut.
Ich bin SQL-Neuling. Bitte helfen Sie mir, eine Logik zu finden, mit der ich die gewünschte Pivot-Ansicht erreichen kann. Beachten Sie, dass die Datenmenge groß ist. Erwägen Sie daher skalierbare Lösungen. Wenn die Frage unklar ist und Sie eine Erklärung zur Klärung benötigen, lassen Sie es mich bitte wissen.
您可以使用类似 - 的查询
可以用您选择的语言轻松构建。这是一个使用 PHP 的简单示例 -